body{margin:0}#root{width:100%;height:100vh;overflow:hidden}:root{--color-primary:#303383;--color-text:#1a1a2e;--color-text-soft:#555;--color-muted:#888;--color-faint:#aaa;--color-border:#e0e0e0;--color-border-soft:#eee;--color-surface:#fff;--color-surface-alt:#f5f5f5;--color-error:#e74c3c;--color-danger:#c0392b;--color-warn:#b9770e;--color-ok:#27ae60;--color-info:#5b9bd5;--color-map-hover:#ff8c00;--color-map-selected:#a52a1f;--font-ui:system-ui, sans-serif;--font-mono:ui-monospace, monospace;--fs-xs:11px;--fs-s:12px;--fs-m:13px;--fs-l:15px;--space-1:2px;--space-2:4px;--space-3:6px;--space-4:8px;--space-5:12px}body{font-family:var(--font-ui);color:var(--color-text)}.msg-error,.msg-ok,.msg-warn,.msg-info,.msg-hint{font-family:var(--font-ui);font-size:var(--fs-s);margin:var(--space-2) 0 0;line-height:1.4}.msg-error{color:var(--color-error)}.msg-ok{color:var(--color-ok)}.msg-warn{color:var(--color-warn)}.msg-info{color:var(--color-info)}.msg-hint{color:var(--color-muted)}.msg-small{font-size:var(--fs-xs)}.panel-btn.secondary{background:var(--color-muted)}.panel-btn.secondary:hover{background:var(--color-text-soft)}.panel-btn.panel-btn-cancel{background:var(--color-border);color:var(--color-text)}.panel-btn.panel-btn-cancel:hover{background:#cfcfcf}.panel-btn.danger{background:var(--color-danger)}.mt-2{margin-top:var(--space-1)}.mt-4{margin-top:var(--space-2)}.mt-6{margin-top:var(--space-3)}.mt-8{margin-top:var(--space-4)}.mt-12{margin-top:var(--space-5)}.m-0{margin:0}.row{align-items:center;gap:var(--space-3);display:flex}.row-tight{gap:var(--space-2);display:flex}.row-wide{align-items:center;gap:var(--space-4);display:flex}.grow{flex:1;min-width:0}.no-shrink{flex-shrink:0}.scroll-list{max-height:160px;overflow-y:auto}.scroll-list-tall{max-height:220px;overflow-y:auto}.clickable{cursor:pointer}.text-muted{color:var(--color-muted)}.text-ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.sidebar-primary :focus-visible{outline-offset:1px;outline-color:#fff}.layout{width:100vw;height:100vh;display:flex;overflow:hidden}.sidebar-primary{background:var(--color-primary);z-index:10;flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:center;width:52px;padding:16px 0;display:flex}.sidebar-top,.sidebar-bottom{flex-direction:column;align-items:center;gap:8px;display:flex}.sidebar-icon-btn{cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:38px;height:38px;padding:0;transition:background .15s;display:flex}.sidebar-icon-btn:hover{background:#ffffff26}.sidebar-icon-btn:disabled{opacity:.35;cursor:default}.sidebar-icon-btn.active{background:#fff3}.sidebar-divider{border:0;border-top:1px solid #ffffff4d;width:28px;margin:2px 0}.sidebar-primary.with-labels{align-items:stretch;width:196px}.sidebar-primary.with-labels .sidebar-top,.sidebar-primary.with-labels .sidebar-bottom{align-items:stretch;padding:0 8px}.sidebar-primary.with-labels .sidebar-icon-btn{justify-content:flex-start;gap:10px;width:auto;padding:0 8px}.sidebar-primary.with-labels .sidebar-divider{width:auto}.sidebar-label{color:#fff;font-size:var(--fs-m);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sidebar-label-toggle{color:#ffffffbf;cursor:pointer;background:0 0;border:0;align-self:center;padding:4px;font-size:16px;line-height:1}.sidebar-label-toggle:hover{color:#fff}.sidebar-foot{flex-direction:column;align-items:center;gap:6px;margin-top:4px;display:flex}.sidebar-primary.with-labels .sidebar-foot{flex-direction:row;justify-content:space-between;padding:0 4px 0 8px}.sidebar-primary{overflow:hidden auto}@media (height<=900px){.sidebar-primary{padding:10px 0}.sidebar-top,.sidebar-bottom{gap:4px}.sidebar-icon-btn{height:34px}.sidebar-divider{margin:1px 0}}.sidebar-secondary{border-right:2px solid var(--color-border);z-index:9;box-sizing:border-box;background:#fff;flex-direction:column;flex-shrink:0;gap:12px;width:320px;padding:24px 20px;display:flex;overflow-y:auto;box-shadow:2px 0 8px #0000001a}.sidebar-secondary h2{font-family:var(--font-ui);color:var(--color-text);margin:0;font-size:18px;font-weight:600}.sidebar-secondary p{font-family:var(--font-ui);color:var(--color-text-soft);margin:0;font-size:14px;line-height:1.5}.panel-btn{background:var(--color-primary);color:#fff;font-family:var(--font-ui);cursor:pointer;border:none;border-radius:6px;align-self:flex-start;padding:8px 16px;font-size:14px;transition:background .15s}.panel-btn:hover{background:#2428a0}.panel-btn-danger{background:var(--color-error)}.panel-btn-danger:hover{background:var(--color-danger)}.panel-btn-full{text-align:center;align-self:stretch;width:100%}.preview-tooltip .maplibregl-popup-content{color:#fff;font-family:var(--font-ui);font-size:var(--fs-s);box-shadow:none;white-space:nowrap;pointer-events:none;background:#1e1e28d9;border-radius:4px;padding:4px 10px;font-weight:600}.preview-tooltip .maplibregl-popup-tip{border-top-color:#1e1e28d9}.km-tooltip .maplibregl-popup-content{color:#fff;font-family:var(--font-ui);font-size:var(--fs-s);box-shadow:none;white-space:nowrap;pointer-events:none;background:#0f766eeb;border-radius:4px;padding:4px 10px;font-weight:600}.km-tooltip .maplibregl-popup-tip{border-top-color:#0f766eeb}.overlay-list{flex-direction:column;gap:2px;margin-top:8px;display:flex}.overlay-item{border:1px solid #ddd;border-radius:5px;padding:6px 10px}.line-suggestions{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.line-suggestion{font-family:var(--font-ui);font-size:var(--fs-s);color:#333;cursor:pointer;background:0 0;border:1px solid #ddd;border-radius:5px;align-items:baseline;gap:5px;padding:3px 7px;transition:background .1s;display:flex}.line-suggestion:hover{background:#f0f0f4}.line-suggestion.active{border-color:var(--color-primary);color:var(--color-primary);font-weight:600}.line-suggestion-distance{color:var(--color-muted);font-size:10px}.line-suggestion.active .line-suggestion-distance{color:var(--color-primary)}.overlay-error{font-family:var(--font-ui);font-size:var(--fs-xs);color:var(--color-map-selected);margin:6px 0 0;line-height:1.4}.track-label-svg{fill:var(--color-primary);font-family:var(--font-ui);stroke:#fff;stroke-width:3px;paint-order:stroke fill;font-weight:600}.selecting-hint{font-family:var(--font-ui);font-size:var(--fs-s);color:#6c5ce7;margin:0;font-style:italic}.form-error{font-family:var(--font-ui);font-size:var(--fs-s);color:var(--color-danger);margin:0}.form-list{font-family:var(--font-ui);font-size:var(--fs-s);color:#333;margin:4px 0 8px;padding-left:18px}.form-list li{margin:2px 0}.input-error{border-color:var(--color-danger)!important;outline-color:var(--color-danger)!important}.form-error-required{color:var(--color-danger);font-weight:600}.basemap-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.basemap-tile{cursor:pointer;background:0 0;border:2px solid #0000;border-radius:8px;flex-direction:column;align-items:center;gap:5px;padding:4px;transition:border-color .15s;display:flex}.basemap-tile:hover{border-color:#aaa}.basemap-tile.active{border-color:var(--color-primary)}.basemap-thumbnail{aspect-ratio:4/3;object-fit:cover;pointer-events:none;border:1px solid #ddd;border-radius:5px;width:100%;height:auto;display:block;overflow:hidden}.basemap-label{font-family:var(--font-ui);font-size:var(--fs-xs);color:#333;text-align:center;line-height:1.3}.basemap-tile.active .basemap-label{color:var(--color-primary);font-weight:600}.basemap-tile-full{border-color:#ddd;flex-direction:row;grid-column:1/-1;justify-content:flex-start;gap:10px;padding:6px 8px}.basemap-tile-full .basemap-thumbnail{aspect-ratio:4/3;flex-shrink:0;width:60px}.lv-state-list{flex-direction:column;gap:2px;margin-top:8px;display:flex}.lv-state-btn{text-align:left;font-size:var(--fs-s);cursor:pointer;color:#333;background:0 0;border:1px solid #ddd;border-radius:5px;padding:6px 10px;transition:background .1s}.lv-state-btn:hover:not(:disabled){background:#f0f0f4}.lv-state-btn.active{color:var(--color-primary);border-color:var(--color-primary);font-weight:600}.lv-state-btn:disabled{color:#bbb;cursor:default}.back-btn{font-family:var(--font-ui);font-size:var(--fs-m);color:var(--color-primary);cursor:pointer;background:0 0;border:none;align-items:center;gap:5px;margin-bottom:4px;padding:0 0 4px;display:flex}.back-btn:hover{text-decoration:underline}.create-element-options{flex-direction:column;gap:8px;display:flex}.create-element-section{font-family:var(--font-ui);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);margin-top:8px;margin-bottom:-2px;font-weight:600}.create-element-btn{background:var(--color-surface-alt);border:1px solid var(--color-border);font-family:var(--font-ui);font-size:var(--fs-m);color:var(--color-text);cursor:pointer;text-align:left;border-radius:6px;align-items:center;gap:10px;padding:10px 12px;transition:background .15s,border-color .15s;display:flex}.create-element-btn:hover{border-color:var(--color-primary);background:#eeeef8}.create-element-btn.active{border-color:var(--color-primary);color:var(--color-primary);background:#eeeef8}.track-groups{flex-direction:column;gap:6px;display:flex}.track-group-header{align-items:center;gap:6px;display:flex}.track-group-toggle{min-width:0;font-family:var(--font-ui);font-size:var(--fs-s);color:var(--color-text);cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:6px;padding:4px 2px;font-weight:600;display:flex}.track-group-toggle:hover .track-group-title{color:var(--color-primary)}.track-group-caret{width:10px;color:var(--color-muted);transition:transform .15s;display:inline-block}.track-group-caret.open{transform:rotate(90deg)}.track-group-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.track-group-count{font-weight:400;font-size:var(--fs-xs);color:var(--color-muted)}.track-group-all{border:1px solid var(--color-border);font-family:var(--font-ui);font-size:var(--fs-xs);color:var(--color-text-soft);cursor:pointer;background:0 0;border-radius:4px;padding:2px 6px}.track-group-all:hover{border-color:var(--color-primary);color:var(--color-primary)}.track-group-list{flex-direction:column;gap:4px;padding-left:16px;display:flex}.rename-rows{font-family:var(--font-ui);font-size:var(--fs-s);flex-direction:column;gap:4px;display:flex}.rename-row{align-items:center;gap:6px;min-width:0;display:flex}.rename-row input.rename-number{flex-shrink:0;width:44px;padding:3px 5px}.rename-old{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-muted);flex:1;overflow:hidden}.rename-arrow{color:var(--color-muted)}.rename-new{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-text);flex:1;font-weight:600;overflow:hidden}.rename-new.fallback{font-style:italic}.rename-new.clash{color:var(--color-error)}.rename-note{font-size:var(--fs-xs);color:var(--color-muted);font-style:italic}.track-visibility-actions{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.create-element-btn.track-group-item{padding:6px 10px}.element-form{border:1px solid var(--color-border);background:#f9f9f9;border-radius:6px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.form-field{flex-direction:column;gap:3px;display:flex}.form-field label{font-family:var(--font-ui);font-size:var(--fs-xs);color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.04em;font-weight:500}.form-field select,.form-field input{font-size:var(--fs-m);font-family:var(--font-ui);color:var(--color-text);background:#fff;border:1px solid #ddd;border-radius:5px;padding:5px 8px}.form-field input[readonly]{background:var(--color-surface-alt);color:var(--color-muted)}.field-override{font-family:var(--font-ui);font-size:var(--fs-xs);color:#6c5ce7;text-align:left;cursor:pointer;background:0 0;border:none;padding:0}.uic-suggestions{z-index:100;max-height:220px;font-family:var(--font-ui);background:#fff;border:1px solid #d0d0d0;border-radius:4px;margin:2px 0 0;padding:0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #0000001f}.uic-suggestions li{cursor:pointer;font-size:var(--fs-s);justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;display:flex}.uic-suggestions li:hover{background:#eeeef8}.uic-suggestion-name{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.uic-suggestion-uic{color:var(--color-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.form-field select:focus,.form-field input:focus{outline:2px solid var(--color-primary);outline-offset:1px}.toggle-switch-wrap{align-items:center;gap:10px;padding:6px 0;display:flex}.toggle-switch-wrap span{font-family:var(--font-ui);font-size:var(--fs-m);-webkit-user-select:none;user-select:none;transition:color .2s,font-weight .2s}.toggle-switch{flex-shrink:0;width:44px;height:24px;display:inline-block;position:relative}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{cursor:pointer;background:#ccc;border-radius:24px;transition:background .25s;position:absolute;inset:0}.toggle-slider:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .25s;position:absolute;bottom:3px;left:3px;box-shadow:0 1px 3px #00000040}.toggle-switch input:checked+.toggle-slider{background:var(--color-primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(20px)}.coord-row{align-items:center;gap:4px;display:flex}.coord-prefix{font-family:var(--font-ui);font-size:var(--fs-s);color:var(--color-text-soft);min-width:16px;font-weight:600}.coord-row input{flex:1;min-width:0}.settings-row{flex-direction:column;gap:6px;display:flex}.settings-label{font-family:var(--font-ui);font-size:var(--fs-m);color:#333;font-weight:500}.settings-select{font-size:14px;font-family:var(--font-ui);color:var(--color-text);cursor:pointer;background:#f9f9f9;border:1px solid #ddd;border-radius:6px;padding:6px 10px}.settings-select:focus{outline:2px solid var(--color-primary);outline-offset:1px}.settings-color-swatches{flex-wrap:wrap;gap:6px;display:flex}.settings-color-swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:28px;height:28px;padding:0;transition:transform .1s,border-color .1s}.settings-color-swatch:hover{transform:scale(1.15)}.settings-color-swatch.active{border-color:#fff;outline:2px solid #333}.toggle-label{color:var(--color-faint);font-weight:400}.toggle-label.active{color:var(--color-primary);font-weight:600}.link-btn{cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.list-row{font-size:var(--fs-s);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border-soft)}.divider{border:none;border-top:1px solid var(--color-border);margin:var(--space-3) 0}.stack-tight{flex-direction:column;gap:3px;display:flex}.full-width{width:100%}.panel-btn.active{background:var(--color-primary)}.chip{padding:3px var(--space-4);font-size:var(--fs-s);color:var(--color-primary);background:#e8e8f4;border-radius:4px;justify-content:space-between;align-items:center;display:flex}.chip-remove{margin-left:var(--space-3);color:var(--color-muted);cursor:pointer;font-weight:700;font:inherit;background:0 0;border:0;padding:0}.file-slot-name{font-size:var(--fs-s)}.station-name-input{width:100%;position:relative}.station-name-input input{box-sizing:border-box;width:100%}.plan-date-input{width:45%;min-width:0}.plan-logo-thumb{background:var(--color-surface);max-width:80px;max-height:28px}.plan-sketch-thumb{background:var(--color-surface);max-width:120px;max-height:40px}.external-link{color:var(--color-primary);font-size:var(--fs-m);align-items:center;gap:5px;font-weight:500;text-decoration:none;display:inline-flex}.link-as-btn{box-sizing:border-box;justify-content:center;align-items:center;gap:5px;text-decoration:none;display:flex}input.input-error,select.input-error,textarea.input-error{border-color:var(--color-error)}.divider-wide{margin:10px 0}.sidebar-secondary .layers-group-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);margin:var(--space-3) 0;font-weight:600}.icon-glyph{color:currentColor}.icon-glyph-physics{vertical-align:-.025ex}.icon-glyph-paragraph{vertical-align:-.452ex}.commit-bar{gap:var(--space-1);flex-direction:column;display:flex}.commit-bar-row{gap:8px;display:flex}.commit-bar-btn{flex:1 1 0;justify-content:center;align-self:stretch;align-items:center;min-width:0;display:flex}.commit-bar-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.commit-bar-icon{line-height:0;display:none}.commit-bar-compact .commit-bar-icon{display:inline-flex}.commit-bar-compact .commit-bar-label{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.commit-bar-compact .commit-bar-btn{position:relative}.advanced-info{margin:var(--space-2) 0}.advanced-info>summary{cursor:pointer;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);font-weight:600}.advanced-info-body{flex-direction:column;gap:8px;margin-top:8px;display:flex}.form-error-list{margin:var(--space-4) 0}.form-error-list p{margin:0 0 var(--space-2)}.commit-reason{margin:0}.field-rule{font-size:var(--fs-xs);margin-top:var(--space-1);display:block}.form-field:has(.field-rule.rule-sev-error) input{border-color:var(--color-error,#c0392b);outline:1px solid var(--color-error,#c0392b)}:is(.form-field:has(.field-rule.rule-sev-warning) input,.form-field:has(.field-rule.rule-sev-approval) input,.form-field:has(.field-rule.rule-sev-special_case) input){border-color:var(--color-warn,#d68910)}.track-search{gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.track-search input[type=search]{flex:140px;min-width:0}.track-search select{flex:0 auto}.track-search-count{font-size:var(--fs-xs);color:var(--color-text-soft);flex-basis:100%}.track-search-hits{flex-basis:100%}.number-field{align-items:center;gap:var(--space-3);display:flex}.number-field input{flex:1;min-width:0}.number-unit{color:var(--color-text-soft);font-size:var(--fs-s);flex:none;min-width:2.2em}.sidebar-secondary{position:relative;overflow:visible}.panel-content{flex-direction:column;flex:1;gap:12px;min-height:0;margin:-24px -20px;padding:24px 20px;display:flex;overflow-y:auto}.panel-resize{cursor:ew-resize;z-index:2;width:8px;height:100%;position:absolute;top:0;right:-4px}.panel-resize:hover{background:#0000000f}@media (width<=1440px){.sidebar-secondary{width:280px;padding:18px 14px}.panel-content{margin:-18px -14px;padding:18px 14px}}.run-status{gap:var(--space-5);font-size:var(--fs-s);color:var(--color-text-soft);margin-top:var(--space-3);align-items:center;display:flex}.checkbox-row{cursor:pointer;align-items:center;gap:6px;display:flex}.crossover-option{cursor:pointer;align-items:center;gap:6px;margin:4px 0;display:flex}.crossover-pair{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;gap:8px;display:grid}.crossover-pair input{box-sizing:border-box;width:100%}.splice-clearance-pick{justify-content:space-between;align-items:center;gap:8px;display:flex}.splice-clearance-pick .panel-btn{flex:none;width:auto;padding:4px 10px}.splice-solutions{align-items:center;gap:8px;margin:8px 0;display:flex}.splice-solutions span{flex:1;font-size:12px}.splice-solutions .panel-btn{flex:none;width:auto;padding:4px 10px}.route-item{flex-direction:column;align-items:flex-start;gap:2px;width:100%}.route-item-name{font-weight:600}.route-parts{font-size:var(--fs-s);flex-direction:column;gap:2px;margin:0;padding-left:22px;display:flex}.route-dir{color:var(--color-primary);font-size:var(--fs-xs);margin-right:6px}.route-gap{color:var(--color-warn);font-size:var(--fs-xs);margin-left:-22px;list-style:none}.route-list{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.modal-overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;flex-direction:column;gap:20px;width:320px;padding:28px 24px;display:flex;box-shadow:0 8px 32px #0000002e}.modal-code{color:var(--color-text);background:#f0f0f4;border-radius:4px;padding:1px 5px;font-family:monospace;font-size:14px}.modal-message{font-family:var(--font-ui);font-size:var(--fs-l);color:var(--color-text);margin:0;line-height:1.5}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.modal-btn{font-family:var(--font-ui);cursor:pointer;border:none;border-radius:6px;padding:8px 18px;font-size:14px;font-weight:500;transition:background .15s}.modal-btn-cancel{color:#333;background:#f0f0f0}.modal-btn-cancel:hover{background:var(--color-border)}.modal-btn-confirm{background:var(--color-error);color:#fff}.modal-btn-confirm:hover{background:var(--color-danger)}.map-pane{flex:1;position:relative}.map-pane>.map-container{position:absolute;inset:0}.elevation-legend{z-index:5;font-family:var(--font-ui);font-size:var(--fs-xs);color:var(--color-text);pointer-events:none;background:#ffffffeb;border-radius:6px;padding:8px 10px;position:absolute;top:10px;left:10px;box-shadow:0 1px 4px #00000040}.elevation-legend-title{white-space:nowrap;margin-bottom:6px;font-weight:600;display:block}.elevation-legend-body{gap:6px;display:flex}.elevation-legend-bar{border:1px solid #00000040;border-radius:2px;width:14px;height:120px}.elevation-legend-ticks{font-variant-numeric:tabular-nums;flex-direction:column;justify-content:space-between;height:122px;line-height:1;display:flex}.step-notice{z-index:30;align-items:center;gap:var(--space-5);padding:var(--space-4) var(--space-5);background:var(--color-surface);max-width:min(640px,100% - 32px);color:var(--color-text);border:1px solid var(--color-border);font-size:var(--fs-m);border-radius:6px;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000002e}.step-notice-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.step-notice .link-btn{white-space:nowrap;color:var(--color-primary)}.step-notice-close{cursor:pointer;color:var(--color-text-soft);background:0 0;border:0;padding:0 2px;font-size:14px}.map-legend{z-index:20;background:var(--color-surface);border:1px solid var(--color-border);padding:var(--space-4) var(--space-5);font-size:var(--fs-s);color:var(--color-text);border-radius:6px;position:absolute;top:12px;left:12px;box-shadow:0 2px 8px #0000001f}.map-legend-row{align-items:center;gap:var(--space-4);line-height:1.6;display:flex}.service-status{cursor:pointer;background:0 0;border:1px solid #ffffff59;border-radius:10px;gap:5px;padding:5px 6px;display:flex}.service-status:hover{border-color:#ffffffbf}.service-dot{background:#bbb;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 1.5px #ffffffd9}.service-dot.ok{background:#2e7d32}.service-dot.down{background:var(--color-error)}.first-steps h2{margin:0 0 6px}.first-steps-actions{gap:var(--space-4);flex-direction:column;margin-top:12px;display:flex}.maplibregl-ctrl-group button.map-tilt-toggle{font:700 11px/1 var(--font-ui);letter-spacing:.02em;color:#333;-webkit-user-select:none;user-select:none}.maplibregl-ctrl-group button.map-tilt-toggle.active{color:var(--color-primary);background:#3033831f}.maplibregl-ctrl-group button.map-tilt-toggle.active:hover{background:#30338333}.track-table-overlay{border-top:2px solid var(--color-border);z-index:10;height:50%;font-family:var(--font-ui);background:#fff;flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0}.track-table-header{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.track-table-title{color:var(--color-text);font-size:14px;font-weight:600}.track-table-close{cursor:pointer;color:var(--color-muted);background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:16px}.track-table-close:hover{color:var(--color-text);background:#f0f0f0}.track-table-scroll{flex:1;overflow:auto}.track-table{border-collapse:collapse;width:100%;font-size:var(--fs-s)}.track-table th{background:var(--color-surface-alt);text-align:left;color:var(--color-text-soft);border-bottom:1px solid var(--color-border);white-space:nowrap;z-index:2;padding:6px 12px;font-weight:600;position:sticky;top:0}.track-table td{color:var(--color-text);white-space:nowrap;border-bottom:1px solid #f0f0f0;padding:5px 12px}.track-table tbody tr:hover td{background:#f9f9ff}.track-table tbody tr.track-table-row-active td{background:#fbe4e1}.track-table tbody tr.track-table-row-active td:first-child{box-shadow:inset 3px 0 0 var(--color-map-selected);font-weight:600}.track-table-input{width:80px;font-size:var(--fs-s);font-family:var(--font-ui);color:var(--color-text);box-sizing:border-box;background:#fff;border:1px solid #d0d0d0;border-radius:4px;padding:3px 6px}.track-table-input-wide{width:160px}.rule-sev-none{color:#bbb;font-weight:400}.rule-sev-ok{color:#2e7d32}.rule-sev-hint{color:#6b7280}.rule-sev-warning{color:#e08b00}.rule-sev-approval{color:#d35400}.rule-sev-special_case{color:#6a1b9a}.rule-sev-error{color:var(--color-danger)}.track-table-rule{white-space:nowrap;font-weight:600;font-size:var(--fs-xs)}.rule-findings,.rule-findings-ok{font-family:var(--font-ui);font-size:var(--fs-s);margin:4px 0 0;padding:0;list-style:none}.rule-findings li{margin:2px 0}.rule-findings-ok{color:#2e7d32}.track-table-input-exception{background:#fffaf0!important;border-color:#e08b00!important}.track-table-input:disabled{background:var(--color-surface-alt);color:#999;cursor:default;pointer-events:none;border-color:#e8e8e8}.track-table-input:focus{outline:2px solid var(--color-primary);outline-offset:-1px;border-color:var(--color-primary)}.track-table-cap{font-size:var(--fs-s);color:var(--color-text-soft);align-items:center;gap:6px;display:flex}.track-table-cap-input{width:64px}.track-table-vmax-btn{color:var(--color-primary);border:1px solid var(--color-primary);font-size:var(--fs-s);font-family:var(--font-ui);cursor:pointer;background:#fff;border-radius:4px;padding:4px 12px}.track-table-vmax-btn:hover{background:#f0f0f8}.track-table-reach,.track-table-reach-error{font-family:var(--font-ui);font-size:var(--fs-xs);white-space:nowrap}.track-table-reach{color:#6c5ce7}.track-table-reach-error{color:var(--color-danger);font-weight:600}.track-table-save-btn{background:var(--color-primary);color:#fff;font-size:var(--fs-s);font-family:var(--font-ui);cursor:pointer;border:none;border-radius:4px;padding:4px 12px}.track-table-save-btn:hover{background:#232660}.track-table-save-btn:disabled{color:#999;cursor:default;background:#e8e8e8}.track-table-save-btn-dirty{box-shadow:0 0 0 2px #fbe4e1}.track-table-subtitle{color:var(--color-muted);margin-left:8px;font-weight:400}@media (width<=1440px){.track-table-overlay{height:42%}}.track-table td.track-table-joint{min-width:80px;position:relative}.track-table-joint-field{z-index:1;position:absolute;top:0;left:12px;transform:translateY(-50%)}.constraints-overlay{height:auto;top:0}.constraints-scroll{padding:0 16px 16px}.constraints-title{align-items:center;gap:8px;display:flex}.constraints-title .track-table-subtitle{margin-left:0}.constraints-select{width:auto;max-width:320px}.constraints-section{font-size:var(--fs-m);color:var(--color-text);margin:14px 0 4px;font-weight:600}.constraints-subsection{font-size:var(--fs-s);color:var(--color-text-soft);margin:12px 0 4px;font-weight:600}.constraints-hint,.constraints-error{font-size:var(--fs-s);margin:0 0 6px}.constraints-hint{color:var(--color-muted)}.constraints-error{color:var(--color-error)}.constraints-table th{padding-left:0}.constraints-table td{white-space:normal;vertical-align:top;padding-left:0;padding-right:16px}.constraints-value{white-space:nowrap;min-width:90px;font-weight:600}.constraints-where{color:var(--color-muted)}.constraints-expr{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-xs);color:var(--color-text);white-space:normal;margin-top:3px;font-weight:400;display:block}.constraints-severities{flex-wrap:wrap;gap:8px 16px;margin-bottom:10px;display:flex}.constraints-severity{font-size:var(--fs-s);max-width:260px;font-weight:600}.constraints-note,.constraints-math,.constraints-app-mismatch{white-space:normal;margin-top:3px;font-weight:400;display:block}.constraints-note{font-size:var(--fs-xs);color:var(--color-muted)}.constraints-math{font-size:var(--fs-l);color:var(--color-text);margin:5px 0 2px}.constraints-app-mismatch{font-size:var(--fs-xs);color:var(--color-danger);font-weight:600}.querschnitt-profiles{flex-wrap:wrap;gap:16px 24px;display:flex}.querschnitt-figure{flex:280px;max-width:440px;margin:0}.querschnitt-svg{width:100%;height:auto;margin:6px 0;display:block}.querschnitt-points td:first-child{white-space:nowrap;color:var(--color-muted)}.transition-length-actions{flex-direction:column;gap:4px;margin:2px 0 4px;display:flex}.transition-length-row{flex-wrap:wrap;align-items:center;gap:2px 8px;display:flex}.transition-length-row .panel-btn-small{border-radius:4px;padding:3px 8px;font-size:12px}.transition-length-rule{color:var(--color-muted);font-size:.8em;line-height:1.3}.transition-curve-row{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:flex}.form-field label.panel-btn{color:#fff;text-transform:none;letter-spacing:normal;font-size:14px;font-weight:400}.form-field label.transition-curve-row{text-transform:none;letter-spacing:normal}.transition-curve-row span{font-family:var(--font-ui);font-size:var(--fs-m);color:var(--color-text);font-weight:500}.provi-axis-list{border:1px solid #ddd;border-radius:4px;max-height:220px;padding:2px 0;overflow-y:auto}.provi-axis-row{cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--font-ui);font-size:var(--fs-s);align-items:baseline;gap:6px;padding:2px 6px;display:flex}.provi-axis-row:hover{background:#f0f0f8}.provi-axis-name{color:var(--color-text);min-width:64px;font-weight:600}.provi-axis-title{color:#666;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.info-panel-list{flex-direction:column;gap:12px;margin-top:14px;display:flex}.info-panel-item{align-items:flex-start;gap:10px;display:flex}.info-panel-icon{background:var(--color-primary);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.info-panel-text p{font-size:var(--fs-s);color:#666;margin:0;line-height:1.4}.info-panel-link{color:var(--color-primary);white-space:nowrap;font-weight:500;text-decoration:none}.info-panel-link svg{vertical-align:middle;margin-left:3px}.info-panel-link:hover{text-decoration:underline}.profile-overlay{border-top:2px solid var(--color-border);z-index:10;height:45%;font-family:var(--font-ui);background:#fff;flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0}.profile-resize{cursor:ns-resize;z-index:1;height:10px;position:absolute;top:-5px;left:0;right:0}.profile-controls{align-items:center;gap:14px;display:flex}.profile-edit{font-size:var(--fs-s);color:var(--color-text-soft);align-items:center;gap:8px;display:flex}.profile-edit .track-table-input{width:90px}.profile-edit .track-table-input.profile-reason{text-align:left;width:16em}.panel-dot-row{justify-content:center;padding:10px 0 4px;display:flex}.panel-dot{cursor:pointer;background:#ccc;border:none;border-radius:50%;width:9px;height:9px;padding:0;transition:background .15s,transform .15s}.panel-dot:hover{background:#999;transform:scale(1.25)}.panel-dot.active{background:var(--color-primary)}.profile-delete-btn{background:var(--color-error)}.profile-delete-btn:hover:not(:disabled){background:var(--color-danger)}.profile-delete-btn:disabled{cursor:default;background:#ccc}.profile-hint{font-size:var(--fs-s);color:var(--color-muted)}.profile-ref-swatch{border-top:2px dashed #6d4c41;width:18px}.profile-rules{font-size:var(--fs-s);white-space:nowrap;cursor:help;font-weight:600}.profile-body{flex:1;position:relative;overflow:hidden}.profile-svg{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;display:block}.profile-svg.dragging{cursor:grabbing}.profile-edit .cross-section-reach{width:56px}.cross-section-svg{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;display:block}.cross-section-svg.picking{cursor:crosshair}.cross-section-svg.dragging{cursor:grabbing}.cross-section-slider{border-top:1px solid var(--color-border-soft);align-items:center;gap:10px;padding:8px 12px 10px;display:flex}.cross-section-slider input[type=range]{accent-color:var(--color-primary);flex:1}.cross-section-step{width:28px;height:24px;color:var(--color-primary);font-size:var(--fs-xs);cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:4px;flex:none;padding:0}.cross-section-step:hover:not(:disabled){background:#f3f1fd}.cross-section-step:disabled{color:#bbb;cursor:default}.cross-section-slider-label{font-size:var(--fs-s);color:var(--color-text-soft);white-space:nowrap}.cross-section-onward{font-size:var(--fs-s);color:var(--color-text-soft);white-space:nowrap;align-items:center;gap:6px;display:flex}.cross-section-onward-btn{border:1px solid var(--color-primary);color:var(--color-primary);font-size:var(--fs-s);cursor:pointer;background:#fff;border-radius:4px;padding:2px 8px}.cross-section-onward-btn:hover{background:#f3f1fd}.range-row{grid-template-columns:1fr 72px 72px 18px;align-items:center;gap:4px;display:grid}.range-use{font-family:var(--font-ui);font-size:var(--fs-xs);color:var(--color-muted)}.profile-empty{color:var(--color-muted);font-size:var(--fs-m);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}@media (width<=1440px){.profile-overlay{height:40%}}.popout-root{flex-direction:column;display:flex;position:fixed;inset:0}.profile-overlay.detached{border-top:none;flex:1;height:auto;min-height:0;position:static}.cross-section-detach{font-size:var(--fs-s);align-items:center;display:inline-flex}.bands-overlay{height:60%}.bands-readout{font-size:var(--fs-s);color:var(--color-text-soft);font-variant-numeric:tabular-nums;white-space:nowrap}.bands-findings-toggle,.bands-findings-toggle .profile-rules{cursor:pointer}.profile-head{align-self:stretch;align-items:center;gap:20px;display:flex}.profile-tabs{align-self:flex-end;gap:2px;margin-bottom:-11px;display:flex}.profile-tab{font:inherit;font-size:var(--fs-s);color:var(--color-text-soft);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:0;border-radius:6px 6px 0 0;padding:7px 16px 8px;position:relative}.profile-tab:hover{color:var(--color-text);background:var(--color-surface-alt)}.profile-tab.active{border-color:var(--color-border);color:var(--color-primary);box-shadow:inset 0 2px 0 var(--color-primary);background:#fff;margin-bottom:-1px;padding-bottom:9px;font-weight:600}.profile-table{position:absolute;inset:0}.profile-table .track-table-input{width:96px}.profile-table-error{margin:6px 12px}.info-tip{display:inline-flex;position:relative}.info-tip-btn{color:var(--color-muted);cursor:pointer;background:0 0;border:0;border-radius:50%;padding:2px;display:inline-flex}.info-tip-btn:hover,.info-tip-btn.open{color:var(--color-primary)}.info-tip-text{z-index:20;border:1px solid var(--color-border);width:320px;max-width:70vw;font-size:var(--fs-s);color:var(--color-text);white-space:normal;background:#fff;border-radius:6px;padding:8px 10px;font-weight:400;line-height:1.4;position:absolute;top:calc(100% + 6px);box-shadow:0 4px 14px #00000026}.info-tip-left{left:0}.info-tip-right{right:0}.profile-table .profile-governing,.profile-table .profile-governing .track-table-input{font-weight:600}.plan-preview-overlay{z-index:10;font-family:var(--font-ui);background:#e8e8ec;flex-direction:column;display:flex;position:absolute;inset:0}.plan-preview-header{border-bottom:1px solid var(--color-border);background:#fff;flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.plan-preview-title{align-items:baseline;gap:10px;font-size:14px;display:flex}.plan-preview-title span{font-size:var(--fs-s);color:var(--color-muted)}.plan-preview-tools{align-items:center;gap:6px;display:flex}.plan-preview-tools select{font-family:var(--font-ui);font-size:var(--fs-m);border:1px solid var(--color-border);background:#fff;border-radius:6px;padding:4px 6px}.plan-preview-tools .panel-btn{font-size:var(--fs-m);align-self:auto;padding:6px 12px}.plan-preview-step,.plan-preview-close{border:1px solid var(--color-border);width:28px;height:28px;color:var(--color-text);cursor:pointer;background:#fff;border-radius:6px;font-size:16px;line-height:1}.plan-preview-step:disabled{opacity:.4;cursor:default}.plan-preview-close{margin-left:4px;font-size:20px}.plan-preview-body{flex:1;padding:16px;overflow:auto}.plan-preview-sheet svg{background:#fff;width:100%;height:auto;display:block;box-shadow:0 1px 3px #0003,0 10px 30px -14px #00000059}.link-joint-btn{font:inherit;color:#6c5ce7;cursor:pointer;text-align:left;background:0 0;border:none;padding:0}.link-joint-btn:hover{text-decoration:underline}.link-joint-crs{font-weight:600}.topology-ends{font-family:var(--font-ui);margin-top:6px}.topology-ends-count{font-size:var(--fs-s);color:#333;margin:4px 0 2px;font-weight:600}.topology-ends-open{color:#d62828}.topology-ends-list{max-height:280px;overflow-y:auto}.topology-ends-action{font-family:var(--font-ui);font-size:var(--fs-xs);color:var(--color-text-soft);cursor:pointer;background:#f3f3f3;border:1px solid #ccc;border-radius:3px;align-self:flex-start;padding:0 5px}.topology-ends-action:hover{background:#e6e6e6}.topology-graph-scroll{padding:8px 16px 16px}.topology-graph-legend{font-size:var(--fs-xs);color:var(--color-text-soft);flex-wrap:wrap;gap:4px 14px;margin-bottom:6px;display:flex}.topology-graph-legend-item{align-items:center;gap:4px;display:inline-flex}.topology-graph-section h4{font-size:var(--fs-s);color:var(--color-text);margin:12px 0 4px;font-weight:600}.topology-graph-wrap{border:1px solid var(--color-border-soft);border-radius:4px;overflow-x:auto}.topology-graph-svg{display:block}.topology-graph-label{font-family:var(--font-ui);fill:#666;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:3px;font-size:9px}.topology-graph-node-label{fill:var(--color-text);font-weight:600}.topology-graph-node,.topology-graph-track{cursor:pointer}.topology-selected{margin-top:8px}.topology-graph-toolbar{font-size:var(--fs-s);background:#fff8f0;border-bottom:1px solid #f0e0cc;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:6px 16px;display:flex}.topology-graph-toolbar-note{color:#8a5a00}.topology-graph-section-head{align-items:baseline;gap:12px;display:flex}.topology-graph-loose{align-items:center;gap:8px;display:flex}.topology-delete-btn{font-size:var(--fs-xs);color:#d62828;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #d62828;border-radius:3px;padding:2px 8px}.topology-delete-btn:hover{color:#fff;background:#d62828}.topology-swatch{vertical-align:middle;border-radius:2px;width:14px;height:4px;margin-right:6px;display:inline-block}.topology-graph-joint{fill:var(--color-primary)}.topology-graph-label-start{text-anchor:start}.topology-graph-primary{stroke:var(--color-primary)}.topology-graph-highlight{stroke:var(--color-map-hover)}.pointcloud-import,.pointcloud-progress{flex-direction:column;gap:8px;display:flex}.pointcloud-progress progress{width:100%}.pointcloud-actions{flex-wrap:wrap;gap:8px;display:flex}.pointcloud-actions .modal-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.panel-btn:disabled{opacity:.5;cursor:default}.pointcloud-meta{font-family:var(--font-ui);font-size:var(--fs-xs);color:#666}.pointcloud-list-title{font-family:var(--font-ui);font-size:var(--fs-m);margin:14px 0 4px}.pointcloud-item{border-bottom:1px solid var(--color-border-soft);font-family:var(--font-ui);font-size:var(--fs-m);flex-direction:column;gap:2px;padding:6px 0;display:flex}.pointcloud-item .pointcloud-actions{margin-top:4px}.pointcloud-item .modal-btn{font-size:var(--fs-s);padding:4px 10px}.pointcloud-storage{margin-top:10px}.pointcloud-text-btn{font-size:var(--fs-s);align-self:flex-start;margin-top:4px;padding:4px 10px}.pointcloud-text-modal{width:min(720px,100vw - 32px);max-height:calc(100vh - 64px);font-family:var(--font-ui);gap:12px}.pointcloud-text{min-height:0;max-height:60vh;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-s);tab-size:16;white-space:pre;-webkit-user-select:text;user-select:text;background:#f6f6f8;border:1px solid #e2e2e6;border-radius:6px;flex:1;margin:0;padding:8px 10px;line-height:1.45;overflow:auto}.cross-section-cloud{pointer-events:none;position:absolute;top:0;left:0}.profile-body .cross-section-svg{position:relative}.cross-section-coloring{font-size:var(--fs-s)}.cross-section-header{flex-wrap:wrap;gap:6px 14px}.cross-section-header .track-table-title,.cross-section-header .profile-hint{white-space:nowrap}.cross-section-header .profile-controls{flex-wrap:wrap;justify-content:flex-end;row-gap:6px}.clearance-stretches{flex-direction:column;gap:4px;display:flex}.clearance-stretch{font-size:var(--fs-s);color:var(--color-danger)}.pointcloud-badge{border:1px solid var(--color-primary);color:var(--color-primary);font-size:var(--fs-xs);vertical-align:1px;border-radius:8px;margin-left:4px;padding:0 6px;font-weight:400;display:inline-block}.pointcloud-badge.local{color:#666;border-color:#999}.pointcloud-cache{flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:8px;display:flex}.pointcloud-cache label{align-items:center;gap:4px;display:flex}.pointcloud-cache .track-table-input{width:4.5em}.curvature-chart{-webkit-user-select:none;user-select:none;touch-action:none;cursor:grab;width:100%;position:relative}.curvature-chart.dragging{cursor:grabbing}.curvature-chart.inserting{cursor:crosshair}.curvature-chart svg{display:block}.curvature-chart .chart-label{font-family:var(--font-ui);font-size:var(--fs-xs);fill:var(--color-muted)}.curvature-chart .straight-band{fill:var(--color-primary);fill-opacity:.08;cursor:pointer}.curvature-chart .straight-band.selected{fill-opacity:.22}.curvature-chart.inserting .straight-band{cursor:crosshair}.curvature-chart .straight-edge{stroke:var(--color-primary);stroke-width:6px;stroke-opacity:.25;cursor:ew-resize}.curvature-chart .straight-edge:hover{stroke-opacity:.6}.chart-readout{font-family:var(--font-ui);font-size:var(--fs-xs);color:var(--color-text-soft);min-height:1.4em}.axis-fit-tools{flex-wrap:wrap;gap:6px;margin:6px 0 2px;display:flex}.axis-fit-tools .panel-btn.active{background:var(--color-primary);color:var(--color-surface)}.deviation-band{width:100%;margin:6px 0}.deviation-band svg{display:block}.deviation-band .chart-label{font-family:var(--font-ui);font-size:var(--fs-xs);fill:var(--color-muted)}.shift-values{margin:10px 0}.shift-values>summary{cursor:pointer;font-weight:600;font-size:var(--fs-s)}.shift-table{border-collapse:collapse;width:100%;font-size:var(--fs-xs);font-variant-numeric:tabular-nums}.shift-table th,.shift-table td{text-align:right;border-bottom:1px solid var(--color-border-soft);padding:1px 6px}.shift-table th{color:var(--color-muted);font-weight:600}.modal:focus{outline:none}.modal-title{font-family:var(--font-ui);margin:0;font-size:17px}.modal-btn-primary{background:var(--color-primary);color:#fff}.modal.modal-guide{gap:14px;width:min(1000px,100vw - 32px);height:calc(100vh - 48px);padding:20px 24px}.guide-frame{border:1px solid var(--color-border);border-radius:8px;flex:1;width:100%;min-height:0}.modal.modal-bare{box-shadow:none;background:0 0;width:auto;padding:0}:root{--collab-bg:#fff;--collab-surface:#f6f7fb;--collab-fg:#1a1a2e;--collab-muted:#5f6475;--collab-border:#dfe2ea;--collab-hover:#eef0f6;--collab-selected:#e3e7f6;--collab-input-bg:#fff;--collab-danger:#c0392b;--collab-ok:#2e7d32;--collab-warn:#b26a00;--collab-shadow:0 8px 32px #00000029}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--collab-bg:#1b1c23;--collab-surface:#23252e;--collab-fg:#e8e9f0;--collab-muted:#a3a7b7;--collab-border:#363948;--collab-hover:#2b2e3a;--collab-selected:#313654;--collab-input-bg:#15161c;--collab-danger:#ff7b6b;--collab-ok:#7bd389;--collab-warn:#f2b45a;--collab-shadow:0 8px 32px #00000080}}:root[data-theme=dark]{--collab-bg:#1b1c23;--collab-surface:#23252e;--collab-fg:#e8e9f0;--collab-muted:#a3a7b7;--collab-border:#363948;--collab-hover:#2b2e3a;--collab-selected:#313654;--collab-input-bg:#15161c;--collab-danger:#ff7b6b;--collab-ok:#7bd389;--collab-warn:#f2b45a;--collab-shadow:0 8px 32px #00000080}.track-table-overlay.collab-overlay{background:var(--collab-bg);color:var(--collab-fg);border-top-color:var(--collab-border)}.collab-overlay .track-table-header{border-bottom-color:var(--collab-border);gap:12px}.collab-overlay .track-table-title{color:var(--collab-fg)}.collab-overlay .track-table-subtitle,.collab-overlay .track-table-close{color:var(--collab-muted)}.collab-overlay .track-table-close:hover{background:var(--collab-hover);color:var(--collab-fg)}.track-table-overlay.collab-conflict-overlay{height:62%}.collab-header-actions{align-items:center;gap:8px;display:flex}.collab-tab{border:1px solid var(--collab-border);background:var(--collab-surface);color:var(--collab-fg);font:inherit;cursor:pointer;border-radius:6px;padding:4px 10px;font-size:12px}.collab-tab:hover{background:var(--collab-hover)}.collab-legend{border-bottom:1px solid var(--collab-border);color:var(--collab-fg);flex-wrap:wrap;align-items:center;gap:6px 16px;padding:8px 16px;font-size:12px;display:flex}.collab-legend-item{align-items:center;gap:6px;display:inline-flex}.collab-legend-hint{color:var(--collab-muted);margin-left:auto}.collab-swatch{border-top:4px solid var(--swatch);width:22px;height:0;display:inline-block}.collab-swatch-removed{border-top-style:dashed}.collab-scroll{padding:4px 0 12px}.collab-empty{color:var(--collab-muted);margin:12px 16px;font-size:13px}.collab-list{margin:0;padding:0 8px;list-style:none}.collab-list-plain li{align-items:baseline;gap:8px;padding:4px 8px;font-size:12px;display:flex}.collab-row{width:100%;color:var(--collab-fg);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:baseline;gap:10px;padding:6px 8px;font-size:12.5px;display:flex}.collab-row:hover{background:var(--collab-hover)}.collab-row.selected{background:var(--collab-selected)}.collab-row-text{overflow-wrap:anywhere}.collab-badge{text-align:center;text-transform:uppercase;letter-spacing:.03em;min-width:64px;color:var(--badge);border:1px solid var(--badge);border-radius:10px;flex-shrink:0;padding:1px 6px;font-size:10.5px;font-weight:600}.collab-section{padding:6px 16px}.collab-section h4,.collab-section summary{color:var(--collab-muted);text-transform:uppercase;letter-spacing:.04em;cursor:default;margin:6px 0;font-size:12px;font-weight:600}.collab-section summary{cursor:pointer}.collab-conflicts{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.collab-conflict{border:1px solid var(--collab-border);background:var(--collab-surface);border-radius:8px;flex-wrap:wrap;align-items:stretch;gap:6px 12px;padding:8px 10px;display:flex}.collab-conflict.selected{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary) inset}.collab-conflict.solved{opacity:.75}.collab-conflict.solved .collab-conflict-text:before{content:"✓ ";color:var(--collab-ok)}.collab-conflict-head{color:var(--collab-fg);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:260px;gap:2px;padding:0;font-size:13px;display:flex}.collab-conflict-hint{color:var(--collab-warn);font-size:11.5px}.collab-findings{color:var(--collab-danger);margin:2px 0 0;padding-left:18px;font-size:11.5px}.collab-choices{flex-wrap:wrap;flex:260px;gap:6px;display:flex}.collab-choice{border:1px solid var(--collab-border);border-left:4px solid var(--side);background:var(--collab-bg);cursor:pointer;border-radius:6px;flex:120px;grid-template-columns:auto 1fr;align-items:center;column-gap:6px;padding:4px 8px;font-size:12px;display:grid}.collab-choice:has(input:checked){box-shadow:0 0 0 1px var(--side) inset}.collab-choice-label{font-weight:600}.collab-choice-value{color:var(--collab-muted);overflow-wrap:anywhere;grid-column:2}.collab-footer{border-top:1px solid var(--collab-border);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:10px 16px;display:flex}.collab-status{margin-right:auto;font-size:13px}.collab-status.open{color:var(--collab-warn)}.collab-status.done{color:var(--collab-ok)}.collab-btn-primary{background:var(--color-primary);color:#fff}.collab-btn-primary:hover:not(:disabled){filter:brightness(1.1)}.modal-btn:disabled{opacity:.45;cursor:not-allowed}.collab-page{box-sizing:border-box;background:var(--collab-surface);min-height:100vh;color:var(--collab-fg);height:100vh;font-family:system-ui,sans-serif;overflow-y:auto}.collab-center{justify-content:center;align-items:center;padding:16px;display:flex}.collab-card{background:var(--collab-bg);border:1px solid var(--collab-border);box-shadow:var(--collab-shadow);border-radius:12px;padding:28px 24px}.collab-login{box-sizing:border-box;flex-direction:column;gap:14px;width:100%;max-width:360px;display:flex}.collab-login h2{margin:0;font-size:18px}.collab-brand{align-items:center;gap:10px;display:flex}.collab-brand h1{color:var(--collab-fg);margin:0;font-size:20px;font-weight:700}.collab-logo{width:34px;height:34px;color:var(--color-primary);flex-shrink:0}.collab-muted{color:var(--collab-muted);margin:0;font-size:13px;line-height:1.45}.collab-hint{color:var(--collab-muted);margin:0;font-size:12px}.collab-error{color:var(--collab-danger);margin:0;font-size:13px}.collab-error-box{border:1px solid var(--collab-danger);color:var(--collab-danger);border-radius:8px;padding:8px 10px;font-size:12.5px}.collab-error-box ul{margin:4px 0 0;padding-left:18px}.collab-field{flex-direction:column;gap:5px;font-size:13px;display:flex}.collab-field>span{color:var(--collab-muted);font-weight:500}.collab-field input,.collab-field textarea,.collab-field select{font:inherit;border:1px solid var(--collab-border);background:var(--collab-input-bg);color:var(--collab-fg);box-sizing:border-box;border-radius:6px;width:100%;min-width:0;padding:8px 10px;font-size:14px}.collab-field input:focus,.collab-field textarea:focus,.collab-field select:focus{outline:2px solid var(--color-primary);outline-offset:-1px}.collab-field input[type=file]{padding:6px}.collab-check{align-items:center;gap:8px;font-size:13px;display:flex}.collab-btn{font:inherit;border:1px solid var(--collab-border);background:var(--collab-bg);color:var(--collab-fg);cursor:pointer;white-space:nowrap;border-radius:6px;padding:7px 14px;font-size:13px;font-weight:500}.collab-btn:hover:not(:disabled){background:var(--collab-hover)}.collab-btn:disabled{opacity:.45;cursor:not-allowed}.collab-btn.collab-btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.collab-btn.collab-btn-danger{color:var(--collab-danger);border-color:var(--collab-danger)}.collab-btn.collab-btn-primary:hover:not(:disabled){background:var(--color-primary);filter:brightness(1.15)}.collab-btn-block{width:100%;padding:10px 14px;font-size:14px}.collab-btn-small{padding:4px 10px;font-size:12px}.collab-link{font:inherit;color:var(--collab-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:13px}.collab-link:hover{color:var(--collab-fg)}.collab-link.active{color:var(--color-primary);font-weight:600}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .collab-link.active{color:#9aa2ff}}.collab-langs{justify-content:center;gap:8px;display:flex}.collab-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.collab-label{color:var(--collab-muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.modal.collab-modal{box-sizing:border-box;background:var(--collab-bg);width:min(520px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--collab-fg);gap:14px;font-family:system-ui,sans-serif;overflow-y:auto}.collab-modal-title{margin:0;font-size:17px}.collab-modal-list{flex-direction:column;gap:6px;max-height:240px;display:flex;overflow-y:auto}.collab-modal-list .collab-list{padding:0}.collab-modal .modal-btn-cancel{background:var(--collab-hover);color:var(--collab-fg)}.home-top{background:var(--collab-bg);border-bottom:1px solid var(--collab-border);z-index:5;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;padding:14px 24px;display:flex;position:sticky;top:0}.home-user{flex-wrap:wrap;align-items:center;gap:8px;display:flex;position:relative}.home-user-name{margin-left:8px;font-size:13px;font-weight:600}.home-main{box-sizing:border-box;max-width:980px;margin:0 auto;padding:20px 24px 40px}.home-section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:8px 0 14px;display:flex}.home-section-head h2{margin:0;font-size:18px}.home-section-actions{flex-wrap:wrap;gap:8px;display:flex}.home-projects{flex-direction:column;gap:14px;margin:0;padding:0;list-style:none;display:flex}.home-project{background:var(--collab-bg);border:1px solid var(--collab-border);border-radius:12px;padding:14px 16px}.home-project-head{align-items:flex-start;gap:14px;display:flex}.home-project-image{box-sizing:border-box;border:1px solid var(--collab-border);object-fit:cover;background:var(--collab-hover);border-radius:8px;flex-shrink:0;width:72px;height:54px}.home-project-titles{flex:1;min-width:0}.home-project-titles h3{overflow-wrap:anywhere;margin:2px 0 4px;font-size:16px}.home-project-toggle{color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:baseline;gap:6px;padding:0;display:flex}.home-variants{flex-direction:column;margin:12px 0 0;padding:0;list-style:none;display:flex}.home-variant{padding:6px 0 6px calc(var(--depth) * 22px);border-top:1px solid var(--collab-border)}.home-variant-main{flex-wrap:wrap;align-items:center;gap:4px 12px;display:flex}.home-variant-name{overflow-wrap:anywhere;min-width:110px;font-size:14px;font-weight:600}.home-branch{color:var(--collab-muted);margin-right:6px;font-weight:400}.home-variant-head{color:var(--collab-muted);flex:1;min-width:160px;font-size:12.5px}.home-variant-local{color:var(--collab-warn);padding:2px 0 0;font-size:12px}.home-variant-ahead{color:var(--collab-muted);font-size:12px}.home-project-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.home-menu{position:relative}.home-menu-list{z-index:20;background:var(--collab-bg);border:1px solid var(--collab-border);min-width:190px;box-shadow:var(--collab-shadow);border-radius:8px;flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0}.home-menu-list button{font:inherit;text-align:left;color:var(--collab-fg);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 10px;font-size:13px}.home-menu-list button:hover{background:var(--collab-hover)}.home-menu-user{border-bottom:1px solid var(--collab-border);margin:0 0 4px;padding:6px 10px 8px;font-weight:600}.home-menu-list button.danger{color:var(--collab-danger)}.home-section{margin-top:32px}.home-guide-preview{border:1px solid var(--collab-border);background:#fff;border-radius:8px;height:280px;position:relative;overflow:hidden}.home-guide-preview iframe{pointer-events:none;border:0;width:100%;height:100%;display:block}.home-guide-open{cursor:pointer;background:linear-gradient(#fff0 40%,#fffffff2 85%);border:0;justify-content:center;align-items:flex-end;padding:0 0 20px;display:flex;position:absolute;inset:0}.home-guide-open:hover .collab-btn{filter:brightness(1.1)}a.collab-btn{text-decoration:none;display:inline-block}.collab-icon-btn{justify-content:center;align-items:center;padding:6px 9px;display:inline-flex}.home-language-list{min-width:150px}.home-language-list button{align-items:center;gap:6px;display:flex}.home-language-list button.current{font-weight:600}.home-language-check{width:1em;color:var(--color-primary)}@media (width<=560px){.home-top{padding:12px 16px}.home-main{padding:16px 16px 32px}.home-variant{padding-left:calc(var(--depth) * 12px)}.home-project-image{width:56px;height:42px}}.wc-bar{z-index:9;box-sizing:border-box;background:var(--collab-bg);max-width:calc(100% - 140px);color:var(--collab-fg);border:1px solid var(--collab-border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:6px 8px 6px 14px;font-family:system-ui,sans-serif;font-size:13px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%);box-shadow:0 2px 12px #00000026}.wc-where{overflow-wrap:anywhere;align-items:baseline;gap:6px;min-width:0;display:flex}.wc-sep{color:var(--collab-muted)}.wc-rev{color:var(--collab-muted);font-size:12px}.wc-state{font:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:12px;gap:8px;padding:2px 10px;font-size:12px;display:inline-flex}.wc-state:disabled{cursor:default}.wc-state-clean{color:var(--collab-ok)}.wc-state-local{color:var(--collab-warn)}.wc-state-newer{color:var(--color-primary)}.wc-newer{font-weight:600}.wc-actions{gap:6px;display:flex}.wc-btn{font:inherit;border:1px solid var(--collab-border);background:var(--collab-surface);color:var(--collab-fg);cursor:pointer;border-radius:6px;padding:5px 12px;font-size:12.5px}.wc-btn:hover:not(:disabled){background:var(--collab-hover)}.wc-btn:disabled{opacity:.45;cursor:not-allowed}.wc-btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.wc-btn-primary:hover:not(:disabled){background:var(--color-primary);filter:brightness(1.12)}.wc-note{z-index:9;font:inherit;border:1px solid var(--collab-border);background:var(--collab-bg);color:var(--collab-fg);cursor:pointer;border-radius:8px;padding:6px 14px;font-family:system-ui,sans-serif;font-size:13px;position:absolute;top:62px;left:50%;transform:translate(-50%);box-shadow:0 2px 10px #0000001f}.collab-ok{color:var(--collab-ok);margin:0 0 10px;font-size:13px}.home-variant.archived{opacity:.6}.home-variant-buttons{align-items:center;gap:6px;margin-left:auto;display:flex}.home-archived-toggle{color:var(--collab-muted);margin-top:12px}.home-project-head .home-menu{margin-left:auto}.admin-users{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.admin-user{border:1px solid var(--collab-border);background:var(--collab-bg);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:12px 14px;display:flex}.admin-user.inactive{opacity:.65}.admin-user-who{overflow-wrap:anywhere;flex-direction:column;flex:160px;min-width:160px;display:flex}.admin-user-facts{flex-wrap:wrap;flex:2 260px;align-items:center;gap:6px;display:flex}.admin-user-actions{flex-wrap:wrap;gap:6px;display:flex}.admin-last{font-size:12px}.admin-badge{border:1px solid var(--collab-border);color:var(--collab-muted);border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600}.admin-badge.admin{color:var(--color-primary);border-color:var(--color-primary)}.admin-badge.active{color:var(--collab-ok);border-color:var(--collab-ok)}.admin-badge.off{color:var(--collab-danger);border-color:var(--collab-danger)}.admin-badge.pending{color:var(--collab-warn);border-color:var(--collab-warn)}.admin-badge.clouds{color:var(--collab-fg);border-color:var(--collab-muted)}.admin-notice{line-height:1.6}.admin-password{background:var(--collab-hover);color:var(--collab-fg);-webkit-user-select:all;user-select:all;border-radius:4px;padding:2px 6px;font-family:ui-monospace,monospace;font-size:13px}.admin-password-row{align-items:center;gap:6px;display:flex}.admin-password-row input{flex:1}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .admin-badge.admin{color:#9aa2ff;border-color:#9aa2ff}}.history-where{overflow-wrap:anywhere;margin-left:4px}.history-local{color:var(--collab-warn);flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 12px;font-size:13px;display:flex}.history-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.history-rev{border:1px solid var(--collab-border);border-left:4px solid var(--color-primary);background:var(--collab-bg);border-radius:8px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.history-rev.merge{border-left-color:var(--collab-warn)}.history-rev.inherited{border-left-color:var(--collab-border);opacity:.85}.history-rev-head{flex-wrap:wrap;align-items:baseline;gap:6px 10px;font-size:13px;display:flex}.history-rev-number{font-weight:700}.history-rev-message{overflow-wrap:anywhere;font-size:13.5px}.history-rev-actions{flex-wrap:wrap;gap:6px;display:flex}.image-picker{border:none;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;font-size:13px;display:flex}.image-picker legend{color:var(--collab-muted);margin-bottom:5px;padding:0;font-weight:500}.image-picker-grid{grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:6px;display:grid}.image-option{cursor:pointer;display:block;position:relative}.image-option input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.image-option-tile{aspect-ratio:4/3;border:1px solid var(--collab-border);background:var(--collab-surface);border-radius:6px;justify-content:center;align-items:center;display:flex;overflow:hidden}.image-option-tile img{object-fit:cover;width:100%;height:100%;display:block}.image-option-text{text-align:center;color:var(--collab-muted);overflow-wrap:anywhere;padding:2px;font-size:10.5px;line-height:1.15}.image-option:hover .image-option-tile{border-color:var(--collab-muted)}.image-option input:checked+.image-option-tile{outline:2px solid var(--color-primary);outline-offset:1px;border-color:#0000}.image-option input:focus-visible+.image-option-tile{outline:2px solid var(--color-primary);outline-offset:3px}.image-picker:disabled .image-option{cursor:default;opacity:.6}.image-picker-caption{color:var(--collab-fg);margin:0;font-weight:500}.image-picker-credit{color:var(--collab-muted);margin:0;font-size:11px}.home-project-members{margin:2px 0 0;font-size:12.5px}.members-intro{margin:0;font-size:13px}.members-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.members-row{border-top:1px solid var(--collab-border);align-items:center;gap:10px;padding:7px 0;font-size:13.5px;display:flex}.members-row:first-child{border-top:none}.members-who{overflow-wrap:anywhere;flex-wrap:wrap;flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.members-who .collab-muted{font-size:12.5px}.members-add{border-top:1px solid var(--collab-border);flex-direction:column;gap:8px;padding-top:12px;display:flex}.members-hits{max-height:220px;overflow-y:auto}.modal.collab-modal.local-store{width:min(680px,100vw - 32px)}.local-store-section{flex-direction:column;gap:4px;display:flex}.local-store-section h3{margin:4px 0 0}.local-store-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.local-store-row{border-top:1px solid var(--collab-border);flex-wrap:wrap;align-items:center;gap:6px 12px;padding:7px 0;font-size:13.5px;display:flex}.local-store-row:first-child{border-top:none}.local-store-what{overflow-wrap:anywhere;flex-direction:column;flex:1;gap:1px;min-width:180px;display:flex}.local-store-what .collab-muted{font-size:12.5px}.local-store-size{font-variant-numeric:tabular-nums;color:var(--collab-muted);white-space:nowrap}.local-store-ask{flex-wrap:wrap;align-items:center;gap:6px;font-size:12.5px;display:flex}.local-store-warn{color:var(--collab-warn);font-size:12.5px}.local-store-confirm-all{border:1px solid var(--collab-danger);border-radius:8px;flex-direction:column;gap:8px;padding:10px 12px;font-size:13.5px;display:flex}.local-store-confirm-all p{margin:0}.local-store-all{margin-right:auto}.admin-disk{margin-top:28px}.admin-disk h2{margin:0 0 6px;font-size:16px}.admin-disk-list{flex-direction:column;gap:4px;margin:6px 0 0;padding:0;list-style:none;display:flex}.admin-disk-list li{flex-wrap:wrap;gap:10px;font-size:13px;display:flex}
