:root{--fpv-slate-950: #0E1116;--fpv-slate-900: #14181F;--fpv-slate-850: #191E26;--fpv-slate-800: #1F252E;--fpv-slate-750: #262D38;--fpv-slate-700: #2F3742;--fpv-slate-600: #3D4654;--fpv-slate-500: #5D6879;--fpv-slate-400: #7A8698;--fpv-slate-300: #8A94A6;--fpv-slate-200: #B4BCC9;--fpv-slate-050: #E6EAF0;--fpv-accent-600: #3B6BF0;--fpv-accent-500: #4F7FFF;--fpv-accent-400: #7DA3FF;--fpv-accent-050: #0A1020;--fpv-danger-400: #F0616B;--fpv-warn-400: #E5A83C;--fpv-success-400: #48B87A;--fpv-bg: var(--fpv-slate-900);--fpv-well: var(--fpv-slate-950);--fpv-surface: var(--fpv-slate-850);--fpv-surface-raised: var(--fpv-slate-800);--fpv-surface-input: var(--fpv-slate-750);--fpv-border: var(--fpv-slate-700);--fpv-border-strong: var(--fpv-slate-600);--fpv-border-control: var(--fpv-slate-500);--fpv-text: var(--fpv-slate-050);--fpv-text-secondary: var(--fpv-slate-200);--fpv-text-muted: var(--fpv-slate-300);--fpv-text-subtle: var(--fpv-slate-400);--fpv-accent: var(--fpv-accent-500);--fpv-accent-hover: var(--fpv-accent-400);--fpv-accent-press: var(--fpv-accent-600);--fpv-accent-ink: var(--fpv-accent-050);--fpv-focus: var(--fpv-accent-400);--fpv-danger: var(--fpv-danger-400);--fpv-warn: var(--fpv-warn-400);--fpv-success: var(--fpv-success-400);--fpv-accent-wash: rgba(79, 127, 255, .14);--fpv-accent-wash-strong: rgba(79, 127, 255, .22);--fpv-danger-wash: rgba(240, 97, 107, .14);--fpv-warn-wash: rgba(229, 168, 60, .14);--fpv-success-wash: rgba(72, 184, 122, .14);--fpv-success-wash-strong: rgba(72, 184, 122, .22);--fpv-scrim: rgba(0, 0, 0, .5);--fpv-cp-routing: #A855C7;--fpv-cp-routing-text: #C9A7DC;--fpv-cp-routing-wash: rgba(168, 85, 199, .14);--fpv-cp-routing-wash-strong: rgba(168, 85, 199, .24);--fpv-cp-routing-hover: rgba(168, 85, 199, .34);--fpv-cp-exit-wash: rgba(229, 168, 60, .14);--fpv-cp-exit-wash-strong: rgba(229, 168, 60, .24);--fpv-space-1: 4px;--fpv-space-2: 8px;--fpv-space-3: 12px;--fpv-space-4: 16px;--fpv-space-5: 20px;--fpv-space-6: 24px;--fpv-space-8: 32px;--fpv-radius-sm: 4px;--fpv-radius-md: 6px;--fpv-radius-lg: 10px;--fpv-radius-xl: 14px;--fpv-shadow-panel: 0 1px 2px rgba(0, 0, 0, .4);--fpv-shadow-popover: 0 4px 12px rgba(0, 0, 0, .45);--fpv-shadow-modal: 0 16px 48px rgba(0, 0, 0, .6);--fpv-z-canvas: 0;--fpv-z-hud: 10;--fpv-z-panel: 20;--fpv-z-chrome: 30;--fpv-z-popover: 60;--fpv-z-modal: 100;--fpv-z-toast: 200;--fpv-dur-fast: .12s;--fpv-dur: .18s;--fpv-ease-out: cubic-bezier(.2, 0, 0, 1);--fpv-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--fpv-text-xs: 11px;--fpv-text-sm: 12px;--fpv-text-md: 13px;--fpv-text-lg: 15px;--fpv-text-xl: 18px;--fpv-text-2xl: 24px}@font-face{font-family:Inter;src:url(/assets/inter-variable-latin-Dx4kXJAl.woff2) format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html,body{font-family:var(--fpv-font);font-size:var(--fpv-text-md);line-height:1.5;color:var(--fpv-text);background:var(--fpv-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.seq-number,.seq-number-input,.cp-coords,.cp-index,#flightpath-position-label,#viewer-flightpath-position-label,.inventory-row-count,.mrsim-track-downloads,.ruler-label,.measurement-label{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}@media(prefers-reduced-motion:reduce){:root{--fpv-dur-fast: 0ms;--fpv-dur: 0ms}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden}.app-container{display:flex;flex-direction:column;width:100%;height:100%}.header{display:flex;align-items:center;background:var(--fpv-bg);border-bottom:1px solid var(--fpv-surface-raised);padding:8px 16px;gap:16px;min-height:48px}.track-name-container{display:flex;align-items:center;gap:4px}#track-name{font-size:16px;font-weight:600;color:var(--fpv-text);background:transparent;border:1px solid transparent;border-radius:4px;padding:4px 8px;cursor:pointer;min-width:150px}#track-name:hover{border-color:var(--fpv-border)}#track-name:focus{border-color:var(--fpv-accent);background:var(--fpv-surface)}.dirty-indicator{color:var(--fpv-warn);font-size:18px;font-weight:700;display:none}.dirty-indicator.visible{display:inline}.toolbar{display:flex;gap:8px;margin-left:auto}.toolbar-btn{background:var(--fpv-surface-raised);border:1px solid var(--fpv-border-strong);border-radius:6px;color:var(--fpv-text);padding:6px 12px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:6px;transition:background .2s,border-color .2s}.toolbar-btn:hover{background:var(--fpv-surface-input);border-color:var(--fpv-text-subtle)}.toolbar-btn:active{background:var(--fpv-border-strong)}.toolbar-btn.primary{background:var(--fpv-accent);border-color:var(--fpv-accent);color:var(--fpv-bg)}.toolbar-separator{width:1px;height:24px;background:var(--fpv-border);margin:0 4px}.autosave-indicator{font-size:11px;color:var(--fpv-text-subtle);display:none}.autosave-indicator.visible{display:block}.container{display:flex;width:100%;flex:1;overflow:hidden}.sidebar{width:200px;min-width:200px;background:var(--fpv-surface);color:var(--fpv-text);padding:16px;display:flex;flex-direction:column;gap:12px;overflow-y:auto}.sidebar h2{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--fpv-text-muted);margin-bottom:8px}.gate-item{background:var(--fpv-surface-raised);border:2px solid var(--fpv-accent);border-radius:8px;padding:12px;cursor:grab;text-align:center;transition:background .2s,transform .2s}.gate-item:hover{background:var(--fpv-surface-input);transform:translateY(-2px)}.gate-item:active{cursor:grabbing}.gate-item .icon{font-size:24px;margin-bottom:4px}.gate-item .label{font-size:12px;color:var(--fpv-text-secondary)}.gate-item{position:relative}.mrsim-badge{position:absolute;top:3px;right:3px;background:var(--fpv-accent-press);color:var(--fpv-accent-hover);font-size:7px;font-weight:700;letter-spacing:.5px;padding:1px 4px;border-radius:3px;line-height:1.2;pointer-events:none;opacity:.85}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:none;align-items:center;justify-content:center;z-index:1000}.modal-overlay.visible{display:flex}.modal{background:var(--fpv-surface);border-radius:12px;padding:24px;min-width:400px;max-width:600px;max-height:80vh;overflow-y:auto;box-shadow:0 8px 32px var(--fpv-scrim)}.modal h3{color:var(--fpv-text);margin-bottom:16px;font-size:18px}.modal-content{color:var(--fpv-text-secondary)}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:20px}.modal-btn{padding:8px 16px;border-radius:6px;border:none;cursor:pointer;font-size:14px}.modal-btn.cancel{background:var(--fpv-border);color:var(--fpv-text)}.modal-btn.cancel:hover{background:var(--fpv-border-strong)}.modal-btn.confirm{background:var(--fpv-accent);color:var(--fpv-bg)}.modal-btn.confirm:hover{background:var(--fpv-accent-hover)}.modal-btn.danger{background:var(--fpv-danger);color:var(--fpv-text)}.modal-btn.danger:hover{background:var(--fpv-danger)}.mrsim-sort-btn{background:var(--fpv-surface-raised);color:var(--fpv-text-secondary);border:1px solid var(--fpv-border-strong);padding:5px 12px;font-size:12px}.mrsim-sort-btn:hover{background:var(--fpv-border)}.mrsim-sort-btn.active{background:var(--fpv-accent);color:var(--fpv-bg);border-color:var(--fpv-accent)}.mrsim-track-row{display:flex;align-items:center;gap:12px;background:var(--fpv-surface);border:1px solid var(--fpv-surface-raised);border-radius:8px;padding:10px 14px}.mrsim-track-row:hover{border-color:var(--fpv-border-strong)}.mrsim-track-info{flex:1;min-width:0}.mrsim-track-name{font-size:14px;font-weight:600;color:var(--fpv-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mrsim-track-meta{font-size:12px;color:var(--fpv-text-muted);margin-top:2px}.mrsim-track-downloads{font-size:12px;color:var(--fpv-accent);white-space:nowrap}.save-input{width:100%;padding:10px 12px;border:1px solid var(--fpv-border);border-radius:6px;background:var(--fpv-bg);color:var(--fpv-text);font-size:14px;margin-bottom:12px}.save-input:focus{border-color:var(--fpv-accent)}.saved-tracks-list{max-height:300px;overflow-y:auto}.saved-track-item{display:flex;align-items:center;padding:12px;background:var(--fpv-surface-raised);border-radius:8px;margin-bottom:8px;cursor:pointer;transition:background .2s}.saved-track-item:hover{background:var(--fpv-surface-input)}.saved-track-item.selected{background:var(--fpv-border-strong);border:1px solid var(--fpv-accent)}.saved-track-info{flex:1}.saved-track-name{color:var(--fpv-text);font-weight:500;margin-bottom:4px}.saved-track-meta{font-size:12px;color:var(--fpv-text-muted)}.saved-track-delete{background:transparent;border:none;color:var(--fpv-text-muted);cursor:pointer;padding:4px 8px;font-size:16px}.saved-track-delete:hover{color:var(--fpv-danger)}.no-saved-tracks{color:var(--fpv-text-subtle);text-align:center;padding:24px;font-style:italic}#import-file-input{display:none}.sequence-panel{margin-top:16px;border-top:1px solid var(--fpv-border);padding-top:16px}.sequence-panel h2{margin-bottom:12px}.sequence-list{display:flex;flex-direction:column;gap:6px;max-height:300px;overflow-y:auto}.sequence-entry{display:flex;align-items:center;background:var(--fpv-surface-raised);border-radius:6px;padding:8px 10px;gap:10px;transition:background .2s}.sequence-entry:hover{background:var(--fpv-surface-input)}.sequence-entry.selected{background:var(--fpv-border-strong);border:1px solid var(--fpv-accent)}.sequence-entry.launch-block{background:var(--fpv-success-wash);border:1px solid var(--fpv-success)}.sequence-entry.launch-block:hover{background:var(--fpv-success-wash-strong)}.sequence-entry .drag-handle{cursor:grab;color:var(--fpv-text-subtle);font-size:14px;padding:2px}.sequence-entry .drag-handle:hover{color:var(--fpv-text-muted)}.sequence-entry .drag-handle:active{cursor:grabbing}.sequence-entry.launch-block .drag-handle{visibility:hidden}.sequence-entry .seq-number{min-width:24px;height:24px;background:var(--fpv-accent);color:var(--fpv-bg);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.sequence-entry.launch-block .seq-number{background:var(--fpv-success)}.sequence-entry .seq-number.flag-seq{background:var(--fpv-warn);min-width:28px}.sequence-entry.feather-flag .seq-number.flag-seq{background:var(--fpv-cp-routing)}.sequence-entry .entry-info{flex:1;display:flex;flex-direction:column;gap:2px;overflow:hidden}.sequence-entry .entry-type{font-size:12px;font-weight:500;color:var(--fpv-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sequence-entry .entry-model{font-size:10px;color:var(--fpv-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sequence-empty{color:var(--fpv-text-subtle);font-size:12px;text-align:center;padding:16px 8px;font-style:italic}.sequence-entry.drag-over{border-top:2px solid var(--fpv-accent)}.sequence-entry.panel-flag{background:var(--fpv-cp-exit-wash);border:1px solid var(--fpv-warn)}.sequence-entry.panel-flag:hover{background:var(--fpv-cp-exit-wash-strong)}.sequence-entry.feather-flag{background:var(--fpv-cp-routing-wash);border:1px solid var(--fpv-cp-routing)}.sequence-entry.feather-flag:hover{background:var(--fpv-cp-routing-wash-strong)}.sequence-entry .flag-icon{font-size:16px;min-width:24px;text-align:center}.seq-number-input{min-width:28px;width:28px;height:24px;background:var(--fpv-accent);color:var(--fpv-bg);border:none;border-radius:4px;font-size:12px;font-weight:600;text-align:center;padding:0;cursor:text;-moz-appearance:textfield}.seq-number-input::-webkit-inner-spin-button,.seq-number-input::-webkit-outer-spin-button{-webkit-appearance:none}.seq-number-input:focus{outline:2px solid var(--fpv-text);background:var(--fpv-accent-press);color:var(--fpv-text)}.seq-number-input.flag-seq{background:var(--fpv-warn);color:var(--fpv-bg)}.sequence-entry.feather-flag .seq-number-input.flag-seq{background:var(--fpv-cp-routing);color:var(--fpv-text)}.seq-number-input.flag-seq:focus{background:var(--fpv-warn)}.reorder-btns{display:flex;flex-direction:column;gap:2px;flex-shrink:0}.reorder-btn{background:var(--fpv-border-strong);border:none;color:var(--fpv-text-secondary);border-radius:3px;width:18px;height:11px;font-size:7px;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;line-height:1}.reorder-btn:hover:not(:disabled){background:var(--fpv-text-subtle);color:var(--fpv-text)}.reorder-btn:disabled{opacity:.25;cursor:default}.control-points-panel{border-top:1px solid var(--fpv-border);padding-top:8px}.control-point-entry{display:flex;align-items:center;background:var(--fpv-surface-raised);border-radius:4px;padding:6px 8px;gap:8px;cursor:pointer;transition:background .2s;font-size:11px}.control-point-entry:hover{background:var(--fpv-surface-input)}.control-point-entry.selected{background:var(--fpv-border-strong);border:1px solid var(--fpv-warn)}.control-point-entry.locked{opacity:.6;cursor:not-allowed}.control-point-entry .cp-index{min-width:20px;height:20px;background:var(--fpv-text-subtle);color:var(--fpv-text);border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600}.control-point-entry .cp-index.manual{background:var(--fpv-accent);color:var(--fpv-bg)}.control-point-entry .cp-index.launch{background:red}.control-point-entry .cp-index.approach{background:#08f}.control-point-entry .cp-index.center{background:#0f0;color:var(--fpv-bg)}.control-point-entry .cp-index.exit{background:#ff0;color:var(--fpv-bg)}.control-point-entry .cp-index.routing{background:#f80;color:var(--fpv-bg)}.control-point-entry .cp-info{flex:1;display:flex;flex-direction:column;gap:1px}.control-point-entry .cp-type{color:var(--fpv-text-muted);font-size:10px}.control-point-entry .cp-coords{color:var(--fpv-text);font-family:monospace;font-size:10px}.control-point-entry .cp-actions{display:flex;gap:2px}.control-point-entry .cp-btn{background:transparent;border:none;cursor:pointer;padding:2px;font-size:12px;opacity:.6;transition:opacity .2s;color:var(--fpv-text)}.control-point-entry .cp-btn:hover{opacity:1}.control-point-entry.locked .cp-btn{display:none}.canvas-container{flex:1;position:relative;background:var(--fpv-bg)}#canvas-container>canvas{width:100%;height:100%;display:block;touch-action:none}.tools-panel{position:absolute;left:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:8px;z-index:100}.tool-btn{width:44px;height:44px;background:var(--fpv-surface);border:1px solid var(--fpv-border);border-radius:8px;color:var(--fpv-text);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:20px;transition:all .2s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.tool-btn:hover{background:var(--fpv-surface-raised);border-color:var(--fpv-border-strong);transform:scale(1.05)}.tool-btn.active{background-color:var(--fpv-surface-raised);background-image:linear-gradient(var(--fpv-accent-wash-strong),var(--fpv-accent-wash-strong));border-color:var(--fpv-accent);color:var(--fpv-text)}.tool-btn:active{transform:scale(.95)}.tool-btn[title]:hover:after{content:attr(title);position:absolute;left:54px;background:#000000d9;color:var(--fpv-text);padding:6px 10px;border-radius:4px;font-size:12px;white-space:nowrap;pointer-events:none}.tools-separator{height:1px;background:var(--fpv-border);margin:4px 0}.pen-options{position:absolute;left:68px;flex-direction:column;gap:6px;background:var(--fpv-surface);border:1px solid var(--fpv-border);border-radius:8px;padding:8px;z-index:101;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:none}.pen-options.visible{display:flex}.pen-color-wrap{display:flex;align-items:center;gap:6px}.pen-color-wrap label{font-size:11px;color:var(--fpv-text-muted);white-space:nowrap}.pen-color-swatch{width:28px;height:28px;border-radius:6px;border:2px solid var(--fpv-text-subtle);cursor:pointer;padding:0;background:red;position:relative;overflow:hidden}.pen-color-swatch input[type=color]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0}.pen-size-wrap{display:flex;align-items:center;gap:6px}.pen-size-wrap label{font-size:11px;color:var(--fpv-text-muted);white-space:nowrap}.pen-size-wrap input[type=range]{width:70px;accent-color:var(--fpv-accent)}.pen-clear-btn{background:var(--fpv-danger-wash);border:1px solid var(--fpv-danger);border-radius:6px;color:var(--fpv-danger);cursor:pointer;font-size:11px;padding:4px 8px;transition:all .15s;text-align:center}.pen-clear-btn:hover{background:var(--fpv-danger-wash)}.view-options{position:absolute;left:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:100}.view-toggle{display:flex;align-items:center;gap:8px;background:var(--fpv-surface);border:1px solid var(--fpv-border);border-radius:8px;padding:8px 12px;color:var(--fpv-text);cursor:pointer;font-size:12px;transition:all .2s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.view-toggle:hover{background:var(--fpv-surface-raised);border-color:var(--fpv-border-strong)}.view-toggle.active{background-color:var(--fpv-surface-raised);background-image:linear-gradient(var(--fpv-accent-wash-strong),var(--fpv-accent-wash-strong));border-color:var(--fpv-accent);color:var(--fpv-text)}.view-toggle .toggle-icon{display:inline-flex;align-items:center;color:var(--fpv-text-muted)}.view-toggle.active .toggle-icon{color:var(--fpv-accent-hover)}@keyframes cornerPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.7}}.selection-corner{animation:cornerPulse 1.5s ease-in-out infinite}.elements-panel{margin-top:16px;border-top:1px solid var(--fpv-border);padding-top:16px}.elements-panel h2{margin-bottom:8px}.groups-list,.elements-list{display:flex;flex-direction:column;gap:6px;max-height:150px;overflow-y:auto}.empty-placeholder{color:var(--fpv-text-subtle);font-size:11px;text-align:center;padding:12px 8px;font-style:italic}.group-entry,.element-entry{display:flex;align-items:center;background:var(--fpv-surface-raised);border-radius:6px;padding:8px 10px;gap:8px;cursor:pointer;transition:background .2s}.group-entry:hover,.element-entry:hover{background:var(--fpv-surface-input)}.group-entry.selected{background:var(--fpv-border-strong);border:1px solid var(--fpv-accent)}.group-name,.element-name{flex:1;font-size:12px;color:var(--fpv-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.group-count,.element-count{font-size:10px;color:var(--fpv-text-muted)}.group-actions,.element-actions{display:flex;gap:4px}.btn-small{background:transparent;border:none;cursor:pointer;padding:2px 4px;font-size:12px;opacity:.7;transition:opacity .2s}.btn-small:hover{opacity:1}.element-entry{flex-wrap:wrap;border:1px solid var(--fpv-border-strong)}.element-entry .element-name{flex-basis:100%;white-space:normal;overflow:visible;text-overflow:unset;font-size:13px;font-weight:500;margin-bottom:2px}.element-entry .element-count{flex:1}.element-entry:hover{border-color:var(--fpv-accent)}.viewer-badge{background:var(--fpv-accent);color:var(--fpv-bg);padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;margin-left:8px}.scrubber-label{font-size:11px;color:var(--fpv-text-muted);white-space:nowrap}.follow-camera-label{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--fpv-text-muted);cursor:pointer;white-space:nowrap}.viewer-toolbar-mobile{position:fixed;top:0;left:0;right:0;z-index:200;transform:translateY(-100%);opacity:0;transition:transform .3s ease,opacity .3s ease;pointer-events:none;background:var(--fpv-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.viewer-toolbar-mobile.viewer-toolbar-visible{transform:translateY(0);opacity:1;pointer-events:auto}@media(max-width:768px){.viewer-toolbar{flex-wrap:wrap;padding:6px 12px;gap:6px}.viewer-toolbar .track-name-container{flex-basis:100%;justify-content:center}.viewer-toolbar .toolbar{margin-left:0;justify-content:center;flex-basis:100%;flex-wrap:wrap;gap:6px}.viewer-toolbar #viewer-scrubber-container{flex-basis:100%;justify-content:center}.viewer-toolbar #viewer-scrubber-container input[type=range]{flex:1;min-width:100px;max-width:200px}.viewer-toolbar input[type=range]{height:24px;cursor:pointer}.viewer-toolbar input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:var(--fpv-accent);cursor:pointer}.viewer-toolbar input[type=range]::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:var(--fpv-accent);cursor:pointer;border:none}}@media(max-width:480px){.viewer-toolbar{padding:4px 8px;gap:4px;min-height:auto}.viewer-toolbar #viewer-track-name{font-size:14px!important;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-badge{font-size:9px;padding:1px 5px}.viewer-toolbar .btn-text{display:none}.viewer-toolbar .toolbar-btn{padding:6px 8px;min-width:36px;justify-content:center}.viewer-separator,.scrubber-label{display:none}.viewer-toolbar #viewer-scrubber-container input[type=range]{flex:1;min-width:80px;width:auto}.follow-camera-label{font-size:10px}}.inventory-panel{position:fixed;top:50%;right:0;transform:translateY(-50%);display:flex;flex-direction:row;align-items:stretch;z-index:500}.inventory-tab{width:28px;min-height:100px;background:var(--fpv-accent-press);border-radius:6px 0 0 6px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-user-select:none;user-select:none}.inventory-tab:hover{background:var(--fpv-accent)}.inventory-tab-label{writing-mode:vertical-rl;transform:rotate(180deg);color:var(--fpv-text);font-size:12px;font-weight:600;letter-spacing:1px;text-transform:uppercase}.inventory-content-outer{max-width:0;overflow:hidden;transition:max-width .3s ease}.inventory-panel.open .inventory-content-outer{max-width:280px}.inventory-content{width:220px;background:var(--fpv-surface);border-left:1px solid var(--fpv-border);padding:16px;display:flex;flex-direction:column;gap:12px;max-height:70vh;overflow-y:auto;box-sizing:border-box}.inventory-title{color:var(--fpv-text);font-size:14px;font-weight:600;margin:0;padding-bottom:8px;border-bottom:1px solid var(--fpv-border)}.inventory-list{display:flex;flex-direction:column;gap:4px;flex:1}.inventory-section-header{color:var(--fpv-text-muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-top:8px;margin-bottom:2px}.inventory-row{display:flex;justify-content:space-between;align-items:center;padding:3px 0}.inventory-row-label{color:var(--fpv-text-secondary);font-size:13px}.inventory-row-count{color:var(--fpv-text);font-size:13px;font-weight:700;min-width:24px;text-align:right}.inventory-row-count.zero{color:var(--fpv-text-subtle);font-weight:400}.inventory-copy-btn{background:var(--fpv-accent-press);color:var(--fpv-text);border:none;border-radius:4px;padding:8px 12px;font-size:13px;cursor:pointer;transition:background .2s;text-align:center;width:100%}.inventory-copy-btn:hover{background:var(--fpv-accent)}.inventory-copy-btn.copied{background:var(--fpv-success)}.shortcuts-panel{position:fixed;bottom:16px;right:0;display:flex;flex-direction:row;align-items:flex-end;z-index:500}.shortcuts-tab{width:28px;min-height:110px;background:var(--fpv-cp-routing-wash-strong);border-radius:6px 0 0 6px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-user-select:none;user-select:none}.shortcuts-tab:hover{background:var(--fpv-cp-routing-hover)}.shortcuts-tab-label{writing-mode:vertical-rl;transform:rotate(180deg);color:var(--fpv-text);font-size:12px;font-weight:600;letter-spacing:1px;text-transform:uppercase}.shortcuts-content-outer{max-width:0;overflow:hidden;transition:max-width .3s ease}.shortcuts-panel.open .shortcuts-content-outer{max-width:280px}.shortcuts-content{width:242px;background:var(--fpv-surface);border-left:1px solid var(--fpv-border);border-top:1px solid var(--fpv-border);border-radius:4px 0 0;padding:12px 14px 14px;display:flex;flex-direction:column;gap:10px;max-height:80vh;overflow-y:auto;box-sizing:border-box}.shortcuts-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:8px;border-bottom:1px solid var(--fpv-border);flex-shrink:0}.shortcuts-title{color:var(--fpv-text);font-size:13px;font-weight:600;margin:0}.shortcuts-close{background:none;border:none;color:var(--fpv-text-muted);font-size:18px;cursor:pointer;padding:0 2px;line-height:1}.shortcuts-close:hover{color:var(--fpv-text)}.shortcut-group{display:flex;flex-direction:column;gap:4px}.shortcut-group-label{color:var(--fpv-cp-routing-text);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;margin-bottom:2px}.shortcut-row{display:flex;align-items:center;gap:8px;padding:2px 0}.shortcut-row span{color:var(--fpv-text-secondary);font-size:12px}.shortcut-row kbd{display:inline-flex;align-items:center;justify-content:center;background:var(--fpv-surface-raised);border:1px solid var(--fpv-border-strong);border-bottom:2px solid var(--fpv-border-strong);border-radius:4px;color:var(--fpv-text);font-family:inherit;font-size:10px;font-weight:600;padding:1px 5px;min-width:20px;white-space:nowrap;flex-shrink:0}.sequence-entry.face-trigger{background:var(--fpv-surface-raised);border-left:3px solid transparent}.sequence-entry.face-trigger:hover{background:var(--fpv-border-strong)}.sequence-entry.face-trigger--entry{border-left-color:var(--fpv-success)}.sequence-entry.face-trigger--exit{border-left-color:var(--fpv-warn)}.sequence-entry .seq-entry-delete{background:transparent;color:var(--fpv-text-muted);border:none;font-size:16px;line-height:1;padding:0 6px;cursor:pointer;margin-left:4px}.sequence-entry .seq-entry-delete:hover{color:var(--fpv-danger)}.face-trigger-overlay{position:fixed;transform:translate(-50%,calc(-100% - 12px));background:var(--fpv-surface);border:1px solid var(--fpv-border-strong);border-radius:6px;padding:6px;display:flex;gap:4px;align-items:center;z-index:10000;box-shadow:0 4px 12px var(--fpv-scrim)}.face-trigger-overlay__input{width:44px;background:var(--fpv-bg);color:var(--fpv-text);border:1px solid var(--fpv-border);border-radius:3px;padding:3px 4px;font-size:13px;text-align:center}.face-trigger-overlay__kind{background:var(--fpv-surface-raised);color:var(--fpv-text-muted);border:1px solid var(--fpv-border-strong);border-radius:3px;padding:3px 8px;font-size:12px;cursor:pointer}.face-trigger-overlay__kind.active{background:var(--fpv-success);color:var(--fpv-text);border-color:var(--fpv-success)}.face-trigger-overlay__kind:nth-child(3).active{background:var(--fpv-warn);border-color:var(--fpv-warn)}.face-trigger-overlay__ok{background:var(--fpv-accent);color:#000;border:none;border-radius:3px;padding:3px 8px;font-size:12px;cursor:pointer;font-weight:600}.te-panel{position:fixed;display:none;flex-direction:column;background:var(--fpv-surface);border:1px solid var(--fpv-border-strong);border-radius:8px;box-shadow:0 8px 32px var(--fpv-scrim);z-index:2000;color:var(--fpv-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;min-width:360px;min-height:240px;overflow:hidden}.te-panel.visible{display:flex}.te-panel.te-floating{top:80px;right:24px;width:540px;height:70vh}.te-panel.te-dock-right{top:0;right:0;bottom:0;width:520px;height:100vh;border-radius:0;border-top:none;border-right:none;border-bottom:none}.te-panel.te-dock-left{top:0;left:0;bottom:0;width:520px;height:100vh;border-radius:0;border-top:none;border-left:none;border-bottom:none}.te-panel.te-dock-bottom{left:0;right:0;bottom:0;width:100vw;height:42vh;border-radius:0;border-left:none;border-right:none;border-bottom:none}.te-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 8px 14px;background:var(--fpv-bg);border-bottom:1px solid var(--fpv-border);cursor:move;-webkit-user-select:none;user-select:none;flex:0 0 auto}.te-panel.te-floating .te-header{border-radius:8px 8px 0 0}.te-title{font-weight:600;font-size:13px;color:var(--fpv-text-secondary)}.te-controls{display:flex;gap:4px}.te-icon-btn{background:transparent;color:var(--fpv-text-secondary);border:1px solid var(--fpv-border);min-width:28px;height:24px;padding:0 6px;cursor:pointer;border-radius:4px;font-size:12px;line-height:1}.te-icon-btn:hover{background:var(--fpv-surface-raised);color:var(--fpv-text)}.te-icon-btn.active{background:var(--fpv-accent);color:var(--fpv-bg);border-color:var(--fpv-accent)}.te-body{display:flex;flex-direction:column;gap:8px;padding:10px 12px 12px;flex:1 1 auto;min-height:0}.te-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;flex:0 0 auto}.te-body textarea#track-editor-textarea{flex:1 1 auto;min-height:80px;width:100%;box-sizing:border-box;padding:10px;background:var(--fpv-bg);color:var(--fpv-text-secondary);border:1px solid var(--fpv-border-strong);border-radius:6px;font-family:Consolas,Monaco,Courier New,monospace;font-size:12px;line-height:1.4;resize:none}.te-band{font-size:12px;margin:0;padding:6px 8px;border-radius:4px;white-space:pre-wrap;display:none;flex:0 0 auto}.te-error{color:var(--fpv-danger);background:var(--fpv-danger-wash);border-left:3px solid var(--fpv-danger)}.te-warn{color:var(--fpv-warn);background:var(--fpv-warn-wash);border-left:3px solid var(--fpv-warn)}.te-resize-handle{position:absolute;right:0;bottom:0;width:14px;height:14px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 50%,var(--fpv-border-strong) 50%,var(--fpv-border-strong) 60%,transparent 60%,transparent 70%,var(--fpv-border-strong) 70%,var(--fpv-border-strong) 80%,transparent 80%);display:none}.te-panel.te-floating .te-resize-handle{display:block}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible,.gate-item:focus-visible,.sequence-entry:focus-visible{outline:2px solid var(--fpv-focus);outline-offset:2px;border-radius:var(--fpv-radius-sm)}.btn-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;color:var(--fpv-text-muted)}.toolbar-btn:hover .btn-icon,.toolbar-btn.primary .btn-icon{color:inherit}.gate-item .icon{display:flex;align-items:center;justify-content:center;margin-bottom:var(--fpv-space-2);color:var(--fpv-text-muted);transition:color var(--fpv-dur) var(--fpv-ease-out)}.gate-item .icon svg{width:26px;height:26px}.gate-item:hover .icon{color:var(--fpv-accent-hover)}.gate-item{border:1px solid var(--fpv-border);border-radius:var(--fpv-radius-lg);transition:background var(--fpv-dur) var(--fpv-ease-out),border-color var(--fpv-dur) var(--fpv-ease-out),transform var(--fpv-dur) var(--fpv-ease-out)}.gate-item:hover{border-color:var(--fpv-accent);transform:translateY(-1px)}.gate-item .label{font-size:var(--fpv-text-sm);line-height:1.35;color:var(--fpv-text-secondary)}.toolbar-btn{border-radius:var(--fpv-radius-md);border-color:var(--fpv-border-control);transition:background var(--fpv-dur-fast) var(--fpv-ease-out),border-color var(--fpv-dur-fast) var(--fpv-ease-out),color var(--fpv-dur-fast) var(--fpv-ease-out)}.toolbar-btn.primary{background:var(--fpv-accent);border-color:var(--fpv-accent);color:var(--fpv-accent-ink);font-weight:600}.toolbar-btn.primary:hover{background:var(--fpv-accent-hover);border-color:var(--fpv-accent-hover)}.toolbar-btn.primary:active{background:var(--fpv-accent-press);border-color:var(--fpv-accent-press)}.toolbar-btn:disabled,.tool-btn:disabled,.modal-btn:disabled,.btn-small:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}select,.save-input,input[type=text],input[type=number],textarea{font-family:inherit;font-size:var(--fpv-text-sm);color:var(--fpv-text);background:var(--fpv-surface-input);border:1px solid var(--fpv-border-control);border-radius:var(--fpv-radius-sm);padding:5px var(--fpv-space-2);transition:border-color var(--fpv-dur-fast) var(--fpv-ease-out)}select{-webkit-appearance:none;appearance:none;padding-right:26px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 20 20' fill='none' stroke='%238A94A6' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 8l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}select:hover,.save-input:hover,input[type=text]:hover,input[type=number]:hover{border-color:var(--fpv-text-subtle)}select option{background:var(--fpv-surface-raised);color:var(--fpv-text)}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:20px;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--fpv-surface-input);border:1px solid var(--fpv-border)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;margin-top:-6px;border-radius:50%;background:var(--fpv-accent);border:2px solid var(--fpv-bg);transition:background var(--fpv-dur-fast) var(--fpv-ease-out)}input[type=range]:hover::-webkit-slider-thumb{background:var(--fpv-accent-hover)}input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--fpv-surface-input);border:1px solid var(--fpv-border)}input[type=range]::-moz-range-thumb{width:14px;height:14px;border:2px solid var(--fpv-bg);border-radius:50%;background:var(--fpv-accent)}input[type=checkbox]{-webkit-appearance:none;appearance:none;width:15px;height:15px;margin:0;border:1px solid var(--fpv-border-control);border-radius:var(--fpv-radius-sm);background:var(--fpv-surface-input);cursor:pointer;position:relative;flex:none;transition:background var(--fpv-dur-fast) var(--fpv-ease-out),border-color var(--fpv-dur-fast) var(--fpv-ease-out)}input[type=checkbox]:checked{background:var(--fpv-accent);border-color:var(--fpv-accent)}input[type=checkbox]:checked:after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid var(--fpv-accent-ink);border-width:0 2px 2px 0;transform:rotate(45deg)}.modal-overlay{background:#0009;z-index:var(--fpv-z-modal)}.modal{border:1px solid var(--fpv-border-strong);border-radius:var(--fpv-radius-xl);box-shadow:var(--fpv-shadow-modal)}.modal-overlay.visible .modal{animation:fpv-modal-in var(--fpv-dur) var(--fpv-ease-out)}@keyframes fpv-modal-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.sidebar{background:var(--fpv-surface);border-right:1px solid var(--fpv-border)}.sidebar h2{font-size:var(--fpv-text-xs);letter-spacing:.08em;color:var(--fpv-text-subtle)}.header{background:var(--fpv-bg);border-bottom:1px solid var(--fpv-border)}.sequence-entry.selected{background-color:var(--fpv-surface-raised);background-image:linear-gradient(var(--fpv-accent-wash),var(--fpv-accent-wash));border:1px solid var(--fpv-accent)}.drag-handle{display:inline-flex;align-items:center;color:var(--fpv-text-subtle)}.mrsim-badge{background:var(--fpv-surface-input);color:var(--fpv-text-subtle);border:1px solid var(--fpv-border);font-size:8px;letter-spacing:.06em}.pen-canvas{position:absolute;inset:0;pointer-events:none;z-index:var(--fpv-z-hud)}.ruler-label,.measurement-label{position:fixed;background:var(--fpv-surface-raised);border:1px solid var(--fpv-border-strong);color:var(--fpv-text);padding:var(--fpv-space-1) var(--fpv-space-2);border-radius:var(--fpv-radius-sm);font-size:var(--fpv-text-sm);box-shadow:var(--fpv-shadow-popover);pointer-events:none;z-index:var(--fpv-z-popover);white-space:nowrap}.measurement-context-menu{position:fixed;background:var(--fpv-surface-raised);color:var(--fpv-text);border:1px solid var(--fpv-border-strong);border-radius:var(--fpv-radius-md);padding:var(--fpv-space-1) 0;font-family:var(--fpv-font);font-size:var(--fpv-text-md);box-shadow:var(--fpv-shadow-popover);z-index:var(--fpv-z-popover);cursor:pointer;-webkit-user-select:none;user-select:none}.measurement-context-menu__item{padding:var(--fpv-space-2) var(--fpv-space-4);transition:background var(--fpv-dur-fast) var(--fpv-ease-out)}.measurement-context-menu__item:hover{background:var(--fpv-surface-input)}.fpv-tooltip{position:fixed;top:92px;left:50%;transform:translate(-50%,-10px);max-width:520px;background:var(--fpv-surface-raised);color:var(--fpv-text);border:1px solid var(--fpv-accent);border-radius:var(--fpv-radius-lg);padding:var(--fpv-space-3) 42px var(--fpv-space-3) var(--fpv-space-4);font-size:var(--fpv-text-md);line-height:1.5;box-shadow:var(--fpv-shadow-modal);z-index:var(--fpv-z-toast);opacity:0;pointer-events:auto;transition:opacity .22s var(--fpv-ease-out),transform .26s var(--fpv-ease-out)}.fpv-tooltip__close{position:absolute;top:var(--fpv-space-1);right:var(--fpv-space-1);display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:none;border:none;color:var(--fpv-text-muted);cursor:pointer;border-radius:var(--fpv-radius-sm)}.fpv-tooltip__close:hover{background:var(--fpv-surface-input);color:var(--fpv-text)}.explore-card{background:var(--fpv-surface-raised);border:1px solid var(--fpv-border);border-radius:var(--fpv-radius-lg);padding:var(--fpv-space-3);display:flex;flex-direction:column;gap:var(--fpv-space-2);transition:border-color var(--fpv-dur) var(--fpv-ease-out)}.explore-card:hover{border-color:var(--fpv-accent)}.fpv-toast{position:fixed;bottom:var(--fpv-space-5);right:var(--fpv-space-5);background:var(--fpv-surface-raised);color:var(--fpv-text);border:1px solid var(--fpv-border-strong);border-left:3px solid var(--fpv-accent);border-radius:var(--fpv-radius-md);padding:var(--fpv-space-3) var(--fpv-space-4);font-size:var(--fpv-text-md);box-shadow:var(--fpv-shadow-popover);z-index:var(--fpv-z-toast);opacity:0;transition:opacity .3s var(--fpv-ease-out)}.fpv-toast--success{border-left-color:var(--fpv-success)}.fpv-toast--error{border-left-color:var(--fpv-danger)}.fpv-toast--warn{border-left-color:var(--fpv-warn)}.marquee{position:fixed;border:1px solid var(--fpv-accent);background:var(--fpv-accent-wash);pointer-events:none;z-index:var(--fpv-z-hud)}.inventory-tab,.shortcuts-tab{background:var(--fpv-surface-raised);border:1px solid var(--fpv-border);border-right:none;color:var(--fpv-text-muted);transition:background var(--fpv-dur) var(--fpv-ease-out),color var(--fpv-dur) var(--fpv-ease-out)}.inventory-tab:hover,.shortcuts-tab:hover,.inventory-panel.open .inventory-tab,.shortcuts-panel.open .shortcuts-tab{background:var(--fpv-surface-input);color:var(--fpv-accent-hover)}.inventory-tab-label,.shortcuts-tab-label{color:inherit}.tool-btn{background-color:var(--fpv-surface-raised);border:1px solid var(--fpv-border-strong);color:var(--fpv-text-secondary)}.tool-btn:hover{background-color:var(--fpv-surface-input);border-color:var(--fpv-border-control);color:var(--fpv-text)}#viewer-toolbar,#flightpath-spline-container,#flightpath-smoothing-container,#flightpath-tightness-container,#flightpath-scrubber-container,#explore-load-more{display:none}#viewer-track-name{color:var(--fpv-text);font-size:16px;font-weight:600}.fpv-l1{margin-left:auto;align-items:center}.fpv-l2{display:flex;align-items:center;gap:8px;padding:0 8px}.fpv-l3{font-size:12px;color:var(--fpv-text-muted)}#viewer-ground-size-select{background:var(--fpv-surface-raised);color:var(--fpv-text);border:1px solid var(--fpv-border-strong);border-radius:4px;padding:4px 8px;font-size:12px;cursor:pointer}#viewer-scrubber-container{display:none;align-items:center;gap:8px}#viewer-flightpath-scrubber{width:160px}#viewer-flightpath-position-label{font-size:11px;color:var(--fpv-text-muted);min-width:28px}#viewer-follow-camera,#flightpath-follow-camera,#debug-control-points{cursor:pointer}#viewer-speed-select{padding:6px 8px;background:var(--fpv-surface-raised);border:1px solid var(--fpv-border-strong);border-radius:4px;color:var(--fpv-text);font-size:12px;cursor:pointer}.fpv-l4,.fpv-l6{border-top:1px solid var(--fpv-border-strong);margin:6px 0;padding-top:6px}.fpv-l5,.fpv-l7{font-size:10px;color:var(--fpv-text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:4px;padding:0 4px}#btn-clear-waypoints{width:100%;margin-top:4px;justify-content:center;font-size:11px}.fpv-l8{margin-top:12px}.fpv-l9{margin-top:16px;border-top:1px solid var(--fpv-border);padding-top:16px}.fpv-l10,.fpv-l26,.fpv-l33,.fpv-l37{display:flex;flex-direction:column;gap:8px}.fpv-l11,.fpv-l12,.fpv-l13,.fpv-l14,.fpv-l15,.fpv-l16,.fpv-l20,.fpv-l27,.fpv-l28,.fpv-l29,.fpv-l31,.fpv-l34,.fpv-l35,.fpv-l38,.fpv-l39{font-size:11px;color:var(--fpv-text-muted);display:block;margin-bottom:4px}#flightpath-method,#flightpath-spline-type,#flightpath-speed-select,#gate-prefer-side,#gate-prefer-corkscrew,#feather-flag-passage-side,#panel-flag-passage-side{width:100%;padding:6px;background:var(--fpv-surface-raised);border:1px solid var(--fpv-border-strong);border-radius:4px;color:var(--fpv-text);font-size:12px}#flightpath-smoothing,#flightpath-tightness,#flightpath-girth,#flightpath-scrubber{width:100%}#generate-flightpath-btn,#clear-flightpath-btn,#add-control-point-btn,#delete-control-point-btn,#reset-control-points-btn{width:100%;justify-content:center}#flightpath-stale-indicator{color:var(--fpv-warn);display:none}.fpv-l17{display:flex;justify-content:space-between;font-size:10px;color:var(--fpv-text-subtle)}#flightpath-playback-controls{display:none;margin-top:8px}.fpv-l18{display:flex;gap:8px;align-items:center}#flightpath-play-btn{flex:1;justify-content:center;padding:8px}#flightpath-stop-btn{flex:.5;justify-content:center;padding:8px}.fpv-l19{margin-top:8px}.fpv-l21,.fpv-l22{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--fpv-text-muted);cursor:pointer;margin-top:4px}#control-points-panel{margin-top:8px;display:none}.fpv-l23{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.fpv-l24{margin:0;font-size:13px;color:var(--fpv-text)}#control-points-count,.fpv-l70{font-size:11px;color:var(--fpv-text-muted)}#control-points-list{max-height:200px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}#control-points-empty{color:var(--fpv-text-subtle);font-size:11px;text-align:center;padding:12px;font-style:italic}.fpv-l25{display:flex;flex-direction:column;gap:6px;margin-top:8px}#add-point-instructions{display:none;margin-top:8px;padding:8px;background:var(--fpv-accent-wash);border-radius:4px;font-size:11px;color:var(--fpv-accent)}#gate-properties-panel,#feather-flag-properties-panel,#panel-flag-properties-panel,#primitive-properties-panel{margin-top:16px;border-top:1px solid var(--fpv-border);padding-top:16px;display:none}.primitive-dimension-row{display:flex;gap:6px}.primitive-dimension-field{flex:1}#primitive-width,#primitive-height,#primitive-depth{width:100%;padding:6px;background:var(--fpv-surface-raised);border:1px solid var(--fpv-border-strong);border-radius:4px;color:var(--fpv-text);font-size:12px}#primitive-color{width:100%;height:30px;padding:2px;background:var(--fpv-surface-raised);border:1px solid var(--fpv-border-strong);border-radius:4px}#gate-id-display,#gate-sequence-display,#feather-flag-id-display,#panel-flag-id-display,#primitive-id-display{font-size:12px;color:var(--fpv-text)}.fpv-l30,.fpv-l32,.fpv-l36,.fpv-l40{font-size:10px;color:var(--fpv-text-subtle);margin-top:4px}.fpv-l41,.fpv-l43,.fpv-l45{padding:6px 12px}.fpv-l42,.fpv-l44,.fpv-l46{font-size:12px;cursor:pointer}#grid-size-select,#snap-size-select,#ground-size-select{background:var(--fpv-surface-raised);color:var(--fpv-text);border:1px solid var(--fpv-border-strong);border-radius:4px;padding:2px 4px;font-size:11px;cursor:pointer;margin-left:4px}.fpv-l47{color:var(--fpv-text-muted);font-size:12px;display:block;margin-bottom:4px}.fpv-l48{display:flex;flex-direction:column;gap:10px;margin-top:14px}.fpv-l49,.fpv-l52{display:flex;align-items:center;gap:10px;cursor:pointer;padding:10px;border:1px solid var(--fpv-border-strong);border-radius:6px}.fpv-l50,.fpv-l53{accent-color:var(--fpv-accent)}.fpv-l51,.fpv-l54{color:var(--fpv-text-muted)}#publish-visibility-label{color:var(--fpv-text-muted);font-size:12px;margin:4px 0 0}.fpv-l55{display:flex;gap:8px;margin-top:12px}#published-url{flex:1;padding:8px 12px;background:var(--fpv-surface);border:1px solid var(--fpv-border-strong);border-radius:6px;color:var(--fpv-text);font-size:14px}#publish-copy-feedback{color:var(--fpv-accent);font-size:12px;margin-top:4px;display:none}.fpv-l56{max-width:700px;width:90vw}#explore-tracks-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;max-height:60vh;overflow-y:auto}#explore-empty{display:none;color:var(--fpv-text-muted);text-align:center;padding:20px}#explore-loading{color:var(--fpv-text-muted);text-align:center;padding:20px}.fpv-l57{text-align:center;margin-top:12px}.fpv-l58{max-width:480px;width:90vw}.fpv-l59{color:var(--fpv-text-muted);font-size:13px;margin-bottom:16px}.fpv-l60{display:flex;flex-direction:column;gap:12px}.fpv-l61,.fpv-l62{display:block;font-size:12px;color:var(--fpv-text-muted);margin-bottom:4px}#mrsim-upload-name,#mrsim-upload-author{width:100%;box-sizing:border-box;padding:8px 10px;background:var(--fpv-surface);border:1px solid var(--fpv-border-strong);border-radius:6px;color:var(--fpv-text);font-size:14px}.fpv-l63{max-width:420px;width:90vw}.fpv-l64{max-width:760px;width:90vw}.fpv-l65{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap;align-items:center}.fpv-l66{font-size:12px;color:var(--fpv-text-muted);margin-right:4px}#mrsim-search{margin-left:auto;flex:0 1 220px;min-width:140px;padding:6px 10px;background:var(--fpv-surface);border:1px solid var(--fpv-border-strong);border-radius:6px;color:var(--fpv-text);font-size:13px}#mrsim-tracks-list{display:flex;flex-direction:column;gap:8px;max-height:58vh;overflow-y:auto}#mrsim-tracks-empty{display:none;color:var(--fpv-text-muted);text-align:center;padding:24px}#mrsim-tracks-loading{color:var(--fpv-text-muted);text-align:center;padding:24px;display:none}#track-not-found{position:fixed;inset:0;background:var(--fpv-bg);color:var(--fpv-text);z-index:3000;display:none;flex-direction:column;align-items:center;justify-content:center;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.fpv-l67{font-size:48px;margin-bottom:16px}.fpv-l68{color:var(--fpv-text-muted);font-size:18px}.fpv-l69{color:var(--fpv-accent);margin-top:24px;font-size:16px}#track-editor-prettyprint{margin-left:auto}.m-shell{--m-bg: var(--fpv-bg);--m-surface: var(--fpv-surface);--m-surface-2: var(--fpv-surface-raised);--m-surface-3: var(--fpv-surface-input);--m-border: var(--fpv-border);--m-border-strong: var(--fpv-border-strong);--m-text: var(--fpv-text);--m-text-dim: var(--fpv-text-secondary);--m-text-faint: var(--fpv-text-muted);--m-accent: var(--fpv-accent);--m-accent-ink: var(--fpv-accent-ink);--m-danger: var(--fpv-danger);--m-warn: var(--fpv-warn);--m-appbar-h: 48px;--m-navbar-h: 64px;--m-radius: 14px;--m-tap: 44px;--m-safe-b: env(safe-area-inset-bottom, 0px);--m-safe-t: env(safe-area-inset-top, 0px);--m-z-canvas: 0;--m-z-hud: 10;--m-z-sheet: 20;--m-z-appbar: 30;--m-z-modal: 100}body.m-shell{margin:0;background:var(--m-bg);color:var(--m-text);overscroll-behavior:none;-webkit-text-size-adjust:100%}body.m-shell>.app-container>.header,body.m-shell .sidebar,body.m-shell .tools-panel,body.m-shell .view-options,body.m-shell .shortcuts-panel,body.m-shell .inventory-panel{display:none!important}body.m-shell .app-container,body.m-shell .container{display:block;width:100%;height:100dvh;margin:0;padding:0}body.m-shell #canvas-container{position:fixed;top:0;bottom:0;left:var(--m-canvas-inset-l, 0px);right:0;height:100dvh;z-index:var(--m-z-canvas)}.m-appbar{position:fixed;top:0;left:0;right:0;height:calc(var(--m-appbar-h) + var(--m-safe-t));padding:var(--m-safe-t) 8px 0;display:flex;align-items:center;gap:4px;background:color-mix(in srgb,var(--m-bg) 82%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--m-border);z-index:var(--m-z-appbar)}.m-appbar__title{flex:1;min-width:0;font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-appbar__dirty{color:var(--m-warn);font-size:20px;line-height:1;opacity:0;transition:opacity .15s}.m-appbar__dirty.is-dirty{opacity:1}.m-appbar .m-btn{padding:0 6px}.m-appbar .m-btn small{display:none}.m-btn{min-width:var(--m-tap);min-height:var(--m-tap);display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 10px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--m-text);font-size:17px;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.m-btn:active{background:var(--m-surface-3)}.m-btn[disabled],.m-btn.is-disabled{opacity:.35;pointer-events:none}.m-btn.active{background:var(--m-accent);color:var(--m-accent-ink)}.m-btn--danger{color:var(--m-danger)}.m-btn--deferred{opacity:.5;border-style:dashed;border-color:var(--m-border)}.m-navbar{position:fixed;left:0;right:0;bottom:0;height:calc(var(--m-navbar-h) + var(--m-safe-b));padding-bottom:var(--m-safe-b);display:flex;align-items:stretch;background:color-mix(in srgb,var(--m-bg) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--m-border);z-index:var(--m-z-appbar)}.m-navbar__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;background:transparent;color:var(--m-text-dim);font-family:inherit;font-size:11px;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.m-navbar__item .m-navbar__icon{font-size:20px;line-height:1}.m-navbar__item.is-active{color:var(--m-accent)}.m-sheet{position:fixed;left:0;right:0;bottom:calc(var(--m-navbar-h) + var(--m-safe-b));height:var(--sheet-height, 50dvh);display:flex;flex-direction:column;background:var(--m-surface);border-top:1px solid var(--m-border);border-radius:var(--m-radius) var(--m-radius) 0 0;box-shadow:0 -8px 24px #00000073;transform:translateY(100%);transition:transform .2s ease,height .2s ease;z-index:var(--m-z-sheet)}.m-sheet[hidden]{display:none}.m-sheet.is-open{transform:translateY(0)}.m-sheet.is-dragging{transition:none}.m-sheet__head{position:relative;display:flex;align-items:center;padding:4px 8px 6px;border-bottom:1px solid var(--m-border);touch-action:none;cursor:grab}.m-sheet__grabber{position:absolute;top:6px;left:50%;width:36px;height:4px;margin-left:-18px;border-radius:2px;background:var(--m-border-strong)}.m-sheet__title{flex:1;margin:10px 0 0;font-size:14px;font-weight:600;color:var(--m-text-dim);text-transform:uppercase;letter-spacing:.06em}.m-sheet__close{margin-top:6px;min-width:var(--m-tap);min-height:var(--m-tap);border:0;background:transparent;color:var(--m-text-dim);font-size:16px;cursor:pointer}.m-sheet__body{flex:1;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:10px 12px calc(16px + var(--m-safe-b))}.m-sheet__body .sequence-panel,.m-sheet__body .elements-panel,.m-sheet__body .flightpath-panel,.m-sheet__body .gate-properties-panel,.m-sheet__body .feather-flag-properties-panel,.m-sheet__body .panel-flag-properties-panel,.m-sheet__body .view-options,.m-sheet__body .tools-panel{position:static!important;inset:auto!important;transform:none!important;width:auto!important;max-width:none!important;margin:0 0 12px!important;background:transparent!important;border:0!important;box-shadow:none!important}.m-palette{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.m-sheet__body .gate-item{position:relative;min-height:76px;margin:0!important;padding:10px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;background:var(--m-surface-2);border:1px solid var(--m-border);border-radius:10px;touch-action:manipulation}.m-sheet__body .gate-item.is-armed{border-color:var(--m-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--m-accent) 40%,transparent)}.m-sheet__body .gate-item .label{font-size:11px;line-height:1.25}.m-sheet__body .gate-item .icon{font-size:22px}.m-sheet__body .m-palette>h2{grid-column:1 / -1;margin:4px 0 0;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--m-text-faint)}.m-sheet__body .m-palette>div:not(.gate-item){grid-column:1 / -1}.m-subhead{grid-column:1 / -1;margin:10px 0 2px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--m-text-faint)}.m-actionbar{position:fixed;left:0;right:0;bottom:calc(var(--m-navbar-h) + var(--m-safe-b));display:flex;gap:6px;padding:8px 10px;overflow-x:auto;scrollbar-width:none;background:color-mix(in srgb,var(--m-surface) 96%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--m-border);z-index:var(--m-z-hud);transform:translateY(120%);transition:transform .18s ease}.m-actionbar::-webkit-scrollbar{display:none}.m-actionbar.is-open{transform:translateY(0)}.m-actionbar .m-btn{flex:0 0 auto;flex-direction:column;gap:2px;min-width:60px;height:56px;font-size:18px;background:var(--m-surface-2);border-color:var(--m-border)}.m-actionbar .m-btn small{font-size:10px;color:var(--m-text-dim)}.m-nudge__row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--m-border)}.m-nudge__row:last-child{border-bottom:0}.m-nudge__axis{flex:1;font-size:13px;color:var(--m-text-dim)}.m-nudge__value{min-width:62px;text-align:center;font-variant-numeric:tabular-nums;font-size:15px}.m-nudge__row .m-btn{width:52px;height:44px;background:var(--m-surface-2);border-color:var(--m-border);font-size:20px}.m-nudge__step,.m-rotate__step{min-height:var(--m-tap);padding:0 10px;background:var(--m-surface-3);color:var(--m-text);border:1px solid var(--m-border-strong);border-radius:8px;font-size:14px}.m-nudge__note{padding:8px 0 0;font-size:12px;color:var(--m-warn)}.m-nudge[hidden],.m-pucks[hidden],.m-nudge__note[hidden]{display:none}.m-transform{display:flex;flex-direction:column;gap:12px}.m-seg{display:flex;background:var(--m-surface-2);border:1px solid var(--m-border);border-radius:10px;overflow:hidden}.m-seg__btn{flex:1;min-height:var(--m-tap);background:transparent;color:var(--m-text-dim);border:0;border-right:1px solid var(--m-border);font-size:14px;font-family:inherit}.m-seg__btn:last-child{border-right:0}.m-seg__btn.is-active{background:var(--m-accent);color:var(--m-accent-ink);font-weight:600}.m-seg__btn.is-disabled,.m-seg__btn[disabled]{opacity:.4}.m-pucks{display:flex;gap:8px}.m-puck{width:56px;height:56px;flex:0 0 56px;background:var(--m-surface-2);color:var(--m-text);border:1px solid var(--m-border-strong);border-radius:50%;font-size:15px;font-family:inherit;font-variant-numeric:tabular-nums}.m-puck.is-armed{background:var(--m-accent);color:var(--m-accent-ink);border-color:var(--m-accent);font-weight:700}body.m-shell.m-axis-armed #canvas-container{touch-action:none}.m-shell .sequence-entry.m-reordering{opacity:.6;outline:2px solid var(--m-accent);outline-offset:-2px}.m-shell .sequence-entry.drag-over{box-shadow:inset 0 3px 0 0 var(--m-accent)}.m-shell #sequence-list .sequence-entry{touch-action:pan-y}.m-reticle{position:fixed;left:50%;top:45%;width:64px;height:64px;margin:-32px 0 0 -32px;pointer-events:none;z-index:var(--m-z-hud)}.m-reticle:before,.m-reticle:after{content:"";position:absolute;background:var(--m-accent)}.m-reticle:before{left:50%;top:0;width:2px;height:100%;margin-left:-1px}.m-reticle:after{top:50%;left:0;height:2px;width:100%;margin-top:-1px}.m-shell.m-tile-dragging .m-sheet{opacity:.22;pointer-events:none;transition:opacity .12s ease}.m-shell.m-tile-dragging{touch-action:none}.m-placebar{position:fixed;left:10px;right:10px;bottom:calc(var(--m-navbar-h) + var(--m-safe-b) + 10px);display:flex;gap:8px;z-index:calc(var(--m-z-sheet) + 1)}.m-placebar .m-btn{flex:1;height:52px;background:var(--m-surface-2);border-color:var(--m-border);font-size:14px}.m-placebar .m-btn--primary{background:var(--m-accent);color:var(--m-accent-ink);border-color:var(--m-accent);font-weight:600}.m-hint{position:fixed;left:50%;top:calc(var(--m-appbar-h) + var(--m-safe-t) + 10px);transform:translate(-50%);max-width:min(92vw,420px);padding:8px 14px;border-radius:999px;background:color-mix(in srgb,var(--m-surface-3) 94%,transparent);border:1px solid var(--m-border);color:var(--m-text);font-size:12px;text-align:center;z-index:var(--m-z-hud)}.m-radial{position:fixed;width:0;height:0;z-index:var(--m-z-hud)}.m-radial__item{position:absolute;width:56px;height:56px;margin:-28px 0 0 -28px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-radius:50%;background:var(--m-surface-3);border:1px solid var(--m-border-strong);box-shadow:0 4px 14px #00000080;font-size:18px;color:var(--m-text)}.m-radial__item small{font-size:9px;color:var(--m-text-dim)}.m-radial__item.is-focused{background:var(--m-accent);color:var(--m-accent-ink);transform:scale(1.12)}.m-radial__item.is-focused small{color:var(--m-accent-ink)}body.m-shell.m-lasso-armed #canvas-container{touch-action:none}.m-precision{position:fixed;width:56px;height:56px;margin:-28px 0 0 -28px;border:2px solid var(--m-text-dim);border-radius:50%;background:color-mix(in srgb,var(--m-surface) 35%,transparent);box-shadow:0 4px 14px #00000073;pointer-events:none;z-index:calc(var(--m-z-sheet) + 2)}.m-precision:before,.m-precision:after{content:"";position:absolute;background:var(--m-text-dim)}.m-precision:before{left:50%;top:-12px;width:2px;height:calc(100% + 24px);margin-left:-1px}.m-precision:after{top:50%;left:-12px;height:2px;width:calc(100% + 24px);margin-top:-1px}.m-precision.is-hot{border-color:var(--m-accent)}.m-precision.is-hot:before,.m-precision.is-hot:after{background:var(--m-accent)}.m-precision__hud{position:fixed;transform:translate(-50%,-64px);max-width:min(80vw,300px);padding:5px 12px;border-radius:999px;background:color-mix(in srgb,var(--m-surface-3) 94%,transparent);border:1px solid var(--m-border);color:var(--m-text);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;z-index:calc(var(--m-z-sheet) + 2)}.m-picklist__scrim{position:fixed;inset:0;z-index:calc(var(--m-z-sheet) + 2)}.m-picklist{position:fixed;min-width:200px;max-width:min(86vw,340px);max-height:50dvh;overflow-y:auto;padding:6px;background:var(--m-surface-2);border:1px solid var(--m-border-strong);border-radius:var(--m-radius);box-shadow:0 8px 28px #0000008c;z-index:calc(var(--m-z-sheet) + 3)}.m-picklist__head{padding:6px 10px 8px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--m-text-faint)}.m-picklist__item{display:block;width:100%;min-height:var(--m-tap);padding:0 12px;text-align:left;background:var(--m-surface-3);color:var(--m-text);border:1px solid var(--m-border);border-radius:10px;font-size:14px;touch-action:manipulation}.m-picklist__item+.m-picklist__item{margin-top:6px}.m-picklist__item:active{background:var(--m-accent);color:var(--m-accent-ink)}.m-picklist.is-arming,.m-picklist__scrim.is-arming{pointer-events:none}.m-precision[hidden],.m-precision__hud[hidden],.m-picklist[hidden],.m-picklist__scrim[hidden]{display:none}body.m-shell .modal-overlay.visible{align-items:flex-end;padding:0;z-index:var(--m-z-modal)}body.m-shell .modal-overlay .modal{width:100%;max-width:none;max-height:88dvh;overflow-y:auto;border-radius:var(--m-radius) var(--m-radius) 0 0;padding-bottom:calc(16px + var(--m-safe-b))}body.m-shell .modal-overlay .modal-btn{min-height:var(--m-tap)}@media(min-width:768px){.m-shell{--m-navbar-h: 0px;--m-navrail-w: 76px;--m-rail-w: 320px}body.m-shell .m-navbar{top:calc(var(--m-appbar-h) + var(--m-safe-t));bottom:0;left:0;right:auto;width:var(--m-navrail-w);height:auto;padding-bottom:var(--m-safe-b);flex-direction:column;justify-content:flex-start;gap:2px;border-top:0;border-right:1px solid var(--m-border)}body.m-shell .m-navbar__item{flex:0 0 auto;height:64px;width:100%}body.m-shell .m-sheet{top:calc(var(--m-appbar-h) + var(--m-safe-t));bottom:0;left:var(--m-navrail-w);right:auto;width:var(--m-rail-w);height:auto!important;border-radius:0;border-top:0;border-right:1px solid var(--m-border);transform:translate(-100%);transition:transform .2s ease}body.m-shell .m-sheet.is-open{transform:translate(0)}body.m-shell{--m-canvas-inset-l: var(--m-navrail-w)}body.m-shell.m-sheet-open{--m-canvas-inset-l: calc(var(--m-navrail-w) + var(--m-rail-w))}body.m-shell .m-sheet{transform:translate(calc(-100% - var(--m-navrail-w)))}body.m-shell .m-sheet__grabber{display:none}body.m-shell .m-sheet__head{touch-action:auto;cursor:default}body.m-shell .m-actionbar{inset:50% 12px auto auto;transform:translate(140%,-50%);flex-direction:column;width:76px;max-height:70dvh;overflow-y:auto;overflow-x:hidden;border:1px solid var(--m-border);border-radius:var(--m-radius)}body.m-shell .m-actionbar.is-open{transform:translateY(-50%)}.m-palette{grid-template-columns:repeat(3,1fr)}body.m-shell .modal-overlay.visible{align-items:center;padding:24px}body.m-shell .modal-overlay .modal{max-width:560px;border-radius:var(--m-radius)}}@media(max-height:500px)and (max-width:900px){.m-shell{--m-appbar-h: 40px}.m-sheet{max-height:60dvh}}@media(prefers-reduced-motion:reduce){.m-sheet,.m-actionbar,.m-appbar__dirty{transition:none}}.m-btn>span[aria-hidden],.m-radial__item>span,.m-sheet__close{display:inline-flex;align-items:center;justify-content:center;color:currentColor}.m-btn>span[aria-hidden]>svg,.m-radial__item>span>svg,.m-sheet__close>svg{width:22px;height:22px}.m-navbar .m-btn>span[aria-hidden]>svg{width:24px;height:24px}.m-navbar .m-btn.is-active{color:var(--m-accent)}
