:root{--bg-primary: #141829;--bg-secondary: #1e2240;--bg-toolbar: #2a2f52;--bg-tool-btn: #363b5e;--border-selected: #00d4ff;--border-active-green: #4caf50;--border-active-red: #f44336;--border-inactive: #3a3f62;--text-primary: #e0e0e0;--text-secondary: #9a9fba;--text-orange: #ff8c00;--text-green: #4caf50;--accent-orange: #f57c00;--nav-active: #00d4ff;--tool-panel-bg: rgba(30, 34, 64, .95);--overlay-bg: rgba(0, 0, 0, .5)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;user-select:none;touch-action:manipulation;overscroll-behavior:none}#app{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden}.toolbar{display:flex;align-items:center;gap:3px;padding:4px 6px;background:var(--bg-secondary);border-bottom:1px solid var(--border-inactive);flex-shrink:0;z-index:100;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}.toolbar::-webkit-scrollbar{display:none}.toolbar-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border-inactive);border-radius:6px;background:var(--bg-toolbar);color:var(--text-secondary);cursor:pointer;transition:all .15s ease;flex-shrink:0}.toolbar-btn:hover{background:var(--bg-tool-btn);color:var(--text-primary);border-color:var(--text-secondary)}.toolbar-btn:active{transform:scale(.95)}.toolbar-btn.active{border-color:var(--nav-active);color:var(--nav-active);background:#00d4ff1a}.toolbar-btn.patient-info{width:auto;min-width:80px;padding:3px 8px;flex-direction:column;align-items:flex-start;gap:0;position:relative}.toolbar-btn svg{width:18px;height:18px}.patient-name{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.patient-desc{font-size:10px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.icon-chevron-down{position:absolute;bottom:4px;left:50%;transform:translate(-50%);color:var(--text-secondary)}.patient-info-wrapper{position:relative;flex-shrink:0}.patient-dropdown{display:none;position:fixed;min-width:280px;max-width:400px;max-height:60vh;overflow-y:auto;background:var(--bg-secondary);border:1px solid var(--border-inactive);border-radius:10px;padding:6px;z-index:200;box-shadow:0 8px 24px #00000080;animation:dropdownIn .15s ease}.patient-dropdown.open{display:block}.pd-empty{padding:12px 14px;color:var(--text-secondary);font-size:13px}.pd-patient-header,.pd-study-header{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--text-primary);transition:background .12s}.pd-patient-header:hover,.pd-study-header:hover{background:var(--bg-tool-btn)}.pd-patient-header svg,.pd-study-header svg{flex-shrink:0;color:var(--text-secondary);transition:transform .15s}.pd-patient.collapsed .pd-patient-header svg,.pd-study.collapsed .pd-study-header svg{transform:rotate(-90deg)}.pd-patient-header span{font-weight:600;color:var(--text-orange)}.pd-study-header span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pd-date{margin-left:auto;font-size:11px;color:var(--text-secondary);flex-shrink:0}.pd-patient-body{padding-left:10px}.pd-study-body{padding-left:18px}.pd-patient.collapsed .pd-patient-body,.pd-study.collapsed .pd-study-body{display:none}.pd-series{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:6px;cursor:pointer;font-size:12px;color:var(--text-primary);transition:background .12s}.pd-series:hover{background:#00d4ff1a;color:var(--nav-active)}.pd-series-num{font-size:10px;color:var(--text-secondary);flex-shrink:0;min-width:22px}.pd-series-desc{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pd-series-count{font-size:11px;color:var(--text-secondary);flex-shrink:0}.viewer-area{flex:1;display:flex;position:relative;overflow:hidden;min-height:0}.viewport-grid{flex:1;display:flex;flex-direction:column;gap:4px;padding:4px;min-height:0}.viewport-grid.layout-1x1,.viewport-grid.layout-1x2,.viewport-grid.layout-1x3{flex-direction:column}.viewport-grid.layout-2x1,.viewport-grid.layout-3x1{flex-direction:row}.viewport-grid.layout-1\+2r{display:grid;grid-template-columns:61.8fr 38.2fr;grid-template-rows:1fr 1fr}.viewport-grid.layout-1\+2r .viewport-container:first-child{grid-row:1 / 3}.viewport-grid.layout-1\+2b{display:grid;grid-template-rows:61.8fr 38.2fr;grid-template-columns:1fr 1fr}.viewport-grid.layout-1\+2b .viewport-container:first-child{grid-column:1 / 3}.viewport-container{flex:1;position:relative;border:2px solid var(--border-inactive);border-radius:4px;overflow:hidden;background:#000;min-height:0;cursor:pointer;touch-action:none}.viewport-container.vp-cyan-active{border-color:var(--border-selected)}.viewport-container.vp-cyan-dim{border-color:#00d4ff59}.viewport-container.vp-green-active{border-color:var(--border-active-green)}.viewport-container.vp-green-dim{border-color:#4caf5059}.viewport-container.vp-red-active{border-color:var(--border-active-red)}.viewport-container.vp-red-dim{border-color:#f4433659}.viewport-container.drag-target{border-color:var(--border-selected);box-shadow:inset 0 0 20px #00d4ff26}.viewport-element{width:100%;height:100%;position:absolute;top:0;left:0;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:transparent;touch-action:none}.viewport-element *{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;touch-action:none}.sr-report{position:absolute;inset:0;overflow:auto;background:#0a0c18eb;color:var(--text-primary);z-index:5}.sr-report.hidden{display:none}.sr-report-inner{padding:14px 16px;max-width:980px}.sr-title{font-size:16px;font-weight:700;letter-spacing:.2px}.sr-subtitle{margin-top:2px;font-size:12px;opacity:.75;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.sr-section{margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.08)}.sr-section-title{font-size:12px;font-weight:700;opacity:.9;margin-bottom:8px}.sr-kv{display:grid;grid-template-columns:140px 1fr;gap:6px 12px}.sr-kv-row{display:contents}.sr-k{opacity:.7;font-size:12px}.sr-v{font-size:12px;word-break:break-word}.sr-pill{display:inline-block;padding:1px 6px;border-radius:999px;font-size:10px;background:#00d4ff1f;border:1px solid rgba(0,212,255,.22);margin-right:6px;vertical-align:1px}.sr-pill.sr-pill-dim{background:#ffffff0f;border-color:#ffffff1a;opacity:.85}.sr-item{padding:4px 0;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}.sr-item-name{font-size:12px;opacity:.95}.sr-item-value{font-size:12px;opacity:.85}.sr-muted{font-size:12px;opacity:.7}.sr-warning{font-size:12px;color:var(--text-orange);opacity:.95}.sr-error{font-size:12px;color:#f44336f2}.sr-loading{margin-top:10px;font-size:12px;opacity:.75}.viewport-overlay{position:absolute;display:flex;flex-direction:column;gap:1px;font-size:12px;font-family:Courier New,Courier,monospace;color:var(--text-primary);pointer-events:none;z-index:10;text-shadow:1px 1px 2px rgba(0,0,0,.8);line-height:1.3;padding:8px 10px}.viewport-overlay.top-left{top:0;left:0}.viewport-overlay.top-right{top:0;right:0;text-align:right;align-items:flex-end}.viewport-overlay.bottom-left{bottom:0;left:0}.viewport-overlay.bottom-right{bottom:0;right:0;text-align:right;align-items:flex-end}.overlay-wlww{color:var(--text-orange)}.overlay-slice,.overlay-series{color:var(--text-primary)}.overlay-patient-name{color:var(--text-orange)}.orient-marker{position:absolute;z-index:10;font-size:14px;font-weight:600;font-family:Courier New,Courier,monospace;color:#ffffff80;pointer-events:none;text-shadow:1px 1px 2px rgba(0,0,0,.8)}.orient-top{top:6px;left:50%;transform:translate(-50%)}.orient-bottom{bottom:6px;left:50%;transform:translate(-50%)}.orient-left{left:6px;top:50%;transform:translateY(-50%)}.orient-right{right:16px;top:50%;transform:translateY(-50%)}.drop-zone{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:5;transition:background .2s}.drop-zone.hidden{display:none}.drop-zone.drag-over{background:#00d4ff1a;border:2px dashed var(--border-selected)}.drop-zone-content{text-align:center;color:var(--text-secondary)}.drop-zone-content p{margin-top:8px;font-size:14px}.drop-zone-content .drop-hint{font-size:11px;opacity:.6}.tool-panel{position:absolute;right:0;top:0;bottom:0;display:flex;align-items:stretch;z-index:50;pointer-events:none;transition:transform .25s ease}.tool-panel.collapsed{transform:translate(calc(100% - 32px))}.tool-panel-toggle{width:32px;height:48px;align-self:center;background:var(--accent-orange);border:none;border-radius:8px 0 0 8px;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;pointer-events:auto;transition:background .2s;flex-shrink:0}.tool-panel-toggle:hover{background:#e06800}.tool-panel.collapsed .tool-panel-toggle svg{transform:rotate(180deg)}.tool-panel-buttons{display:flex;flex-direction:column;justify-content:safe center;gap:4px;padding:8px 4px;background:var(--tool-panel-bg);border-left:1px solid var(--border-inactive);overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;border-radius:4px 0 0 4px;pointer-events:auto;overscroll-behavior:contain;touch-action:pan-y}.tool-panel-buttons::-webkit-scrollbar{display:none}.tool-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-inactive);border-radius:8px;background:var(--bg-tool-btn);color:var(--text-secondary);cursor:pointer;transition:all .15s ease;position:relative}.tool-btn:hover{background:var(--bg-toolbar);color:var(--text-primary);border-color:var(--text-secondary)}.tool-btn:active{transform:scale(.92)}.tool-btn.active{border-color:var(--nav-active);color:var(--nav-active);background:#00d4ff26}.tool-btn.has-indicator:after{content:"";position:absolute;top:4px;right:4px;width:8px;height:8px;background:var(--accent-orange);border-radius:50%}.series-strip{display:flex;align-items:center;gap:8px;padding:8px;background:var(--bg-secondary);border-top:1px solid var(--border-inactive);flex-shrink:0;z-index:100;overscroll-behavior:contain}.series-add-wrapper{position:relative;flex-shrink:0}.series-add-btn{width:44px;height:60px;min-width:44px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-inactive);border-radius:8px;background:var(--bg-toolbar);color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.series-add-btn:hover{border-color:var(--nav-active);color:var(--nav-active)}.series-trash-btn{width:44px;height:60px;min-width:44px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-inactive);border-radius:8px;background:var(--bg-toolbar);color:var(--text-secondary);cursor:pointer;transition:all .15s ease;flex-shrink:0;margin-left:auto}.series-trash-btn:hover,.series-trash-btn.drag-over{border-color:var(--border-active-red);color:var(--border-active-red);background:#f4433626}.add-dropdown{display:none;position:absolute;bottom:calc(100% + 8px);left:0;min-width:200px;background:var(--bg-secondary);border:1px solid var(--border-inactive);border-radius:10px;padding:6px;z-index:200;box-shadow:0 8px 24px #00000080;animation:dropdownIn .15s ease}.add-dropdown.open{display:flex;flex-direction:column;gap:2px}@keyframes dropdownIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.add-dropdown-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border:none;border-radius:8px;background:none;color:var(--text-primary);font-size:13px;cursor:pointer;transition:background .12s;white-space:nowrap}.add-dropdown-item:hover{background:var(--bg-tool-btn)}.add-dropdown-item svg{flex-shrink:0;color:var(--text-secondary)}.series-list{display:flex;align-items:center;gap:8px;overflow-x:auto;flex:1;min-width:0;cursor:grab}.series-list::-webkit-scrollbar{height:4px}.series-list::-webkit-scrollbar-thumb{background:var(--border-inactive);border-radius:2px}.series-thumbnail{width:80px;min-width:80px;height:60px;border:2px solid var(--border-inactive);border-radius:6px;overflow:hidden;cursor:pointer;position:relative;background:#000;transition:border-color .15s}.series-thumbnail.vp-cyan-active{border-color:var(--border-selected)}.series-thumbnail.vp-cyan-dim{border-color:#00d4ff59}.series-thumbnail.vp-green-active{border-color:var(--border-active-green)}.series-thumbnail.vp-green-dim{border-color:#4caf5059}.series-thumbnail.vp-red-active{border-color:var(--border-active-red)}.series-thumbnail.vp-red-dim{border-color:#f4433659}.series-thumbnail.dragging{opacity:.5}.series-thumbnail.series-sr{background:linear-gradient(135deg,#00d4ff14,#ff8c001a)}.series-thumbnail.series-sr:before{content:"SR";position:absolute;top:6px;left:6px;font-weight:800;font-size:12px;letter-spacing:.5px;color:#ffffffd9;padding:2px 6px;border-radius:6px;background:#00000073;border:1px solid rgba(255,255,255,.12)}.touch-drag-ghost{border-radius:6px;border:2px solid var(--border-selected);overflow:hidden;background:#000}.touch-drag-ghost img{width:100%;height:100%;object-fit:cover}.series-thumbnail canvas,.series-thumbnail img{width:100%;height:100%;object-fit:contain}.series-thumbnail-overlay{position:absolute;bottom:0;left:0;right:0;background:#000000b3;padding:2px 4px;font-size:9px;color:var(--text-primary);font-family:Courier New,monospace;line-height:1.2}.bottom-nav{display:flex;align-items:center;justify-content:space-around;padding:6px 0;padding-bottom:max(6px,env(safe-area-inset-bottom));background:var(--bg-secondary);border-top:1px solid var(--border-inactive);flex-shrink:0;z-index:100}.nav-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 12px;background:none;border:none;color:var(--text-secondary);cursor:pointer;transition:color .15s;font-size:10px}.nav-btn:hover{color:var(--text-primary)}.nav-btn.active{color:var(--nav-active)}.nav-btn span{font-size:10px}.layout-picker{position:fixed;inset:0;background:#0009;z-index:200;display:flex;align-items:center;justify-content:center}.layout-picker-content{display:flex;flex-wrap:wrap;gap:12px;padding:20px;background:var(--bg-secondary);border:1px solid var(--border-inactive);border-radius:12px;max-width:348px;justify-content:center}.layout-option{width:60px;height:60px;border:1px solid var(--border-inactive);border-radius:8px;background:var(--bg-toolbar);cursor:pointer;padding:8px;transition:all .15s}.layout-option:hover{border-color:var(--nav-active)}.layout-preview{width:100%;height:100%;display:flex;flex-direction:column;gap:2px}.layout-preview.two-rows,.layout-preview.three-rows{flex-direction:column}.layout-preview.two-cols,.layout-preview.three-cols{flex-direction:row}.lp-cell{flex:1;background:var(--border-inactive);border-radius:2px}.layout-preview.one-plus-two-right{display:grid;grid-template-columns:61.8fr 38.2fr;grid-template-rows:1fr 1fr;gap:2px}.layout-preview.one-plus-two-right .lp-cell:first-child{grid-row:1 / 3}.layout-preview.one-plus-two-bottom{display:grid;grid-template-rows:61.8fr 38.2fr;grid-template-columns:1fr 1fr;gap:2px}.layout-preview.one-plus-two-bottom .lp-cell:first-child{grid-column:1 / 3}.tool-tooltip{position:absolute;right:100%;top:50%;transform:translateY(-50%);margin-right:8px;padding:4px 10px;background:var(--bg-toolbar);border:1px solid var(--border-inactive);border-radius:6px;font-size:12px;white-space:nowrap;color:var(--text-primary);pointer-events:none;opacity:0;transition:opacity .15s}.tool-btn:hover .tool-tooltip{opacity:1}.slice-scrollbar{position:absolute;right:4px;top:10%;bottom:10%;width:4px;background:#ffffff1a;border-radius:2px;z-index:10;pointer-events:auto;cursor:pointer;opacity:0;transition:opacity .3s}.viewport-container:hover .slice-scrollbar{opacity:1}.slice-scrollbar-thumb{position:absolute;width:100%;height:14px;background:var(--nav-active);border-radius:2px;transition:top .05s;cursor:grab}.slice-scrollbar-thumb.dragging{cursor:grabbing;transition:none}@media(min-width:768px){.toolbar{padding:8px 12px;gap:8px;overflow-x:visible}.toolbar-btn{width:48px;height:48px;border-radius:8px}.toolbar-btn svg{width:22px;height:22px}.toolbar-btn.patient-info{min-width:120px;padding:4px 12px}.viewport-overlay{font-size:13px;padding:12px 14px}.tool-btn{width:48px;height:48px}}@media(min-width:1024px){.bottom-nav{display:none}.viewport-overlay{font-size:14px}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.viewport-container{animation:fadeIn .2s ease}.loading-progress-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0009;z-index:40;pointer-events:none}.loading-progress-content{text-align:center;min-width:200px}.loading-progress-text{color:var(--text-primary);font-size:13px;margin-bottom:8px}.loading-progress-bar-bg{height:4px;background:#ffffff26;border-radius:2px;overflow:hidden}.loading-progress-bar-fill{height:100%;background:var(--nav-active);border-radius:2px;transition:width .2s ease}.viewport-fullscreen .toolbar,.viewport-fullscreen .series-strip,.viewport-fullscreen .bottom-nav{display:none}.viewport-fullscreen .viewer-area{flex:1}.viewport-fullscreen .viewport-grid{display:flex!important;grid-template-columns:none!important;grid-template-rows:none!important;gap:0;padding:0}.vp-hidden{display:none!important}.vp-fullscreen{flex:1!important;grid-column:unset!important;grid-row:unset!important;border-radius:0}.crosshair-interaction-layer{position:absolute;inset:0;z-index:20;cursor:crosshair;display:none}.crosshair-mode .crosshair-interaction-layer{display:block}.crosshair-line{position:absolute;z-index:21;pointer-events:none;display:none}.crosshair-h{left:0;right:0;height:1px;background:#00d4ffb3}.crosshair-v{top:0;bottom:0;width:1px;background:#00d4ffb3}.svg-layer g[data-annotation-uid]{cursor:grab!important}.svg-layer g[data-annotation-uid]:active{cursor:grabbing!important}.svg-layer g[data-annotation-uid] text{pointer-events:auto!important;cursor:grab!important}.svg-layer g[data-annotation-uid] text:active{cursor:grabbing!important}.svg-layer g[data-annotation-uid] rect.background{pointer-events:visible!important;cursor:grab!important;transition:stroke .15s;stroke:transparent;stroke-width:1}.svg-layer g[data-annotation-uid] rect.background:active{cursor:grabbing!important}.svg-layer g[data-annotation-uid]:hover rect.background{stroke:#00d4ff99;stroke-width:1;rx:3;ry:3}.svg-layer{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none}.svg-layer>line,.svg-layer>polyline,.svg-layer>path{cursor:grab!important;pointer-events:stroke;-webkit-user-drag:none}.svg-layer>circle{cursor:grab!important;pointer-events:fill;-webkit-user-drag:none}.svg-layer>line:active,.svg-layer>polyline:active,.svg-layer>path:active,.svg-layer>circle:active{cursor:grabbing!important}.viewport-element.scroll-active{cursor:ns-resize}.viewport-element.wwwl-active{cursor:crosshair}.viewport-element.zoom-active{cursor:zoom-in}.viewport-element.pan-active{cursor:grab}.viewport-element.pan-active:active{cursor:grabbing}.viewport-element.length-active,.viewport-element.angle-active,.viewport-element.arrow-active{cursor:crosshair}.fasten-wrapper{position:relative;flex-shrink:0}.fasten-dropdown{display:none;position:fixed;min-width:200px;background:var(--bg-secondary);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:6px 0;z-index:200;box-shadow:0 8px 24px #00000080}.fasten-dropdown.open{display:block}.fasten-item{display:flex;align-items:center;gap:10px;padding:8px 14px;cursor:pointer;font-size:13px;color:#fff9;transition:background .12s;user-select:none}.fasten-item:hover{background:#00d4ff14;color:#fff}.fasten-item .fasten-checkbox{width:16px;height:16px;border:1.5px solid rgba(255,255,255,.3);border-radius:3px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s}.fasten-item.active .fasten-checkbox{border-color:var(--border-selected);background:var(--border-selected)}.fasten-item.active .fasten-checkbox:after{content:"";width:8px;height:5px;border-left:2px solid #141829;border-bottom:2px solid #141829;transform:rotate(-45deg) translate(1px,-1px)}.fasten-item.active{color:var(--border-selected)}#fastenBtn.active{color:var(--border-selected);background:#00d4ff1f}.preset-selector-btn{position:absolute;top:12px;left:12px;z-index:60;background:#1e2240d9;color:#ccc;border:1px solid rgba(255,255,255,.15);border-radius:6px;padding:6px 14px;font-size:13px;cursor:pointer;backdrop-filter:blur(4px);transition:background .15s,border-color .15s}.preset-selector-btn:hover{background:#1e2240f2;border-color:var(--border-selected);color:#fff}.preset-dropdown{display:none;position:absolute;top:44px;left:12px;z-index:61;background:var(--bg-secondary);border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:6px 0;min-width:180px;max-height:60vh;overflow-y:auto;box-shadow:0 8px 24px #00000080}.preset-dropdown.open{display:block}.preset-group-header{padding:6px 14px 4px;font-size:11px;font-weight:600;color:#fff6;text-transform:uppercase;letter-spacing:.5px}.preset-item{padding:6px 14px;font-size:13px;color:#ccc;cursor:pointer;transition:background .1s}.preset-item:hover{background:#00d4ff1a;color:#fff}.preset-item.active{color:var(--border-selected);font-weight:500}.threshold-panel{position:absolute;right:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;z-index:55;user-select:none;touch-action:none}.threshold-label{font-size:10px;color:#fff9;letter-spacing:.5px;text-transform:uppercase;white-space:nowrap}.threshold-track{position:relative;width:6px;height:200px;background:#ffffff26;border-radius:3px;cursor:pointer}.threshold-fill{position:absolute;left:0;right:0;background:linear-gradient(to top,#00d4ff80,#00d4ffcc);border-radius:3px}.threshold-handle{position:absolute;left:50%;transform:translate(-50%,50%);width:18px;height:18px;border-radius:50%;background:var(--border-selected);border:2px solid #fff;cursor:grab;touch-action:none;box-shadow:0 1px 4px #00000080;z-index:2}.threshold-handle:active{cursor:grabbing;transform:translate(-50%,50%) scale(1.15)}.threshold-value{font-size:11px;color:#fffc;font-variant-numeric:tabular-nums;min-width:40px;text-align:center}@media(max-width:767px){.threshold-panel{right:8px}.threshold-track{height:150px}.threshold-handle{width:22px;height:22px}}.viewport-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:15}.spinner{width:32px;height:32px;border:3px solid var(--border-inactive);border-top-color:var(--nav-active);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.password-dialog-overlay{position:fixed;inset:0;background:#000000b3;z-index:300;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease}.password-dialog{background:var(--bg-secondary);border:1px solid var(--border-inactive);border-radius:12px;padding:24px;min-width:320px;max-width:90vw;box-shadow:0 12px 40px #0009}.password-dialog-title{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.password-dialog-text{font-size:13px;color:var(--text-secondary);margin-bottom:16px;line-height:1.4}.password-dialog-input{width:100%;padding:10px 12px;background:var(--bg-primary);border:1px solid var(--border-inactive);border-radius:8px;color:var(--text-primary);font-size:14px;outline:none;transition:border-color .15s;box-sizing:border-box}.password-dialog-input:focus{border-color:var(--border-selected)}.password-dialog-buttons{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.password-dialog-btn{padding:8px 20px;border-radius:8px;border:1px solid var(--border-inactive);background:var(--bg-toolbar);color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all .15s}.password-dialog-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}.password-dialog-btn.ok{background:var(--border-selected);border-color:var(--border-selected);color:var(--bg-primary);font-weight:600}.password-dialog-btn.ok:hover{background:#33dfff}.password-dialog-error{color:var(--border-active-red);font-size:12px;margin-top:8px}body.fvng-embed .bottom-nav{display:none}
