:root{--bg: #1f2326;--panel: #1f2326;--panel2: #2a2f34;--line: rgba(248, 248, 248, .12);--line2: rgba(248, 248, 248, .22);--text: #f8f8f8;--muted: #727881;--accent: #d7332b;--accent2: #d7332b;--card: #252a2e}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:auto;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif}body{user-select:none;-webkit-user-select:none}button,select,input{font-family:inherit}.app{position:relative;min-height:100vh;display:grid;grid-template-columns:320px 1fr;background:var(--bg)}.sidebar{background:linear-gradient(180deg,#1f2326,#252a2e);border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0;position:sticky;top:0;height:100vh;transition:width .25s ease,min-width .25s ease,padding .25s ease,opacity .25s ease,transform .25s ease;overflow:hidden}.sidebarHead{padding:18px 18px 12px;border-bottom:1px solid var(--line)}.brand{font-size:22px;font-weight:700;line-height:1.1}.subbrand{margin-top:6px;font-size:13px;color:var(--muted)}.sidebarBody{padding:12px;overflow:auto}.groupTitle{font-size:12px;font-weight:700;color:#d2d8e0;text-transform:uppercase;letter-spacing:.06em;margin:16px 6px 8px}.sceneCard{display:flex;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);background:var(--card);border-radius:14px;cursor:pointer;margin-bottom:8px;transition:.15s ease}.sceneCard:hover{background:#2d3338;border-color:var(--line2)}.sceneCard.active{outline:2px solid var(--accent);background:#2f2627}.sceneThumb{width:82px;height:58px;object-fit:cover;border-radius:10px;background:#1f2326;flex:none}.sceneInfo{min-width:0;flex:1}.sceneName{font-size:15px;font-weight:700;line-height:1.15}.sceneMeta{margin-top:4px;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.main{position:relative;min-width:0;background:#1f2326;min-height:100vh;padding-bottom:0}.stage{position:absolute;top:0!important;right:0!important;bottom:0!important;left:0!important;overflow:hidden;background:#1f2326;cursor:grab;touch-action:none}.stage.zoomed{cursor:move}.stage.dragging{cursor:grabbing}.mainImage{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(1);max-width:100%;max-height:100%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;will-change:transform;backface-visibility:hidden}.topbar{position:absolute;top:0;left:0;right:0;z-index:20;padding:14px 18px 0;display:flex;justify-content:space-between;gap:16px;align-items:flex-start;background:linear-gradient(to bottom,#1f2326e0,#1f232647,#1f232600)}.titleBlock{min-width:0;max-width:45%}.siteInfoCard{display:inline-flex;flex-direction:column;gap:4px;padding:10px 12px;margin-bottom:10px;border-radius:12px;background:#0f141aeb;border:1px solid var(--line2);box-shadow:0 12px 28px #00000038;cursor:pointer;min-width:250px;text-align:left;-moz-appearance:none;appearance:none;-webkit-appearance:none}.siteInfoCard:hover{background:#0f141aeb}.siteInfoRow{display:flex;gap:8px;align-items:center;justify-content:space-between}.siteInfoLabel{font-size:12px;font-weight:700;color:#cfd6df;text-transform:uppercase;letter-spacing:.04em}.siteInfoValue{font-size:14px;font-weight:700;color:#fff;text-align:right;word-break:break-word}.title{font-size:24px;font-weight:700;line-height:1.1;text-shadow:0 2px 12px rgba(0,0,0,.4)}.meta{margin-top:6px;font-size:13px;color:#d6dbe3}.topbarStatus{margin-top:8px;display:inline-flex;align-items:center;padding:8px 10px;border-radius:10px;background:#0f141aeb;border:1px solid rgba(255,255,255,.12);font-size:13px;font-weight:700;color:#fff}.controls{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:54%}.btn,.select{border:1px solid var(--line2);background:#0f141aeb;color:#fff;border-radius:12px;min-height:42px;box-shadow:0 12px 28px #00000038}.btn{padding:0 12px;font-size:14px;font-weight:700;cursor:pointer}.btn:hover{background:#161d25fa}.btn.primary{background:var(--accent)}.btn.primary:hover{background:#b22a24}.btn.iconBtn{color:#fff;text-decoration:none;width:42px;padding:0;display:inline-flex;align-items:center;justify-content:center}.btn.iconBtn svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.select{padding:0 10px;font-size:13px;font-weight:700}.siteInfoEditor{position:absolute;top:86px;left:18px;z-index:25;width:min(420px,calc(100vw - 36px));padding:14px;border-radius:16px;background:#0f141afa;border:1px solid var(--line2);box-shadow:0 18px 42px #00000057;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.saveImageOverlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px;background:#000000b8;cursor:pointer}.saveImageLink{display:contents}.saveImagePreview{display:block;min-height:0;max-width:100%;max-height:calc(100% - 22px);object-fit:contain;border-radius:8px;box-shadow:0 18px 42px #00000073;cursor:context-menu;-webkit-touch-callout:default;user-select:auto;-webkit-user-select:auto}.saveImageHint{font-size:11px;color:#cfd6df;text-align:center}.siteInfoEditorHeader{font-size:16px;font-weight:800;margin-bottom:12px}.siteInfoEditorFields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.siteInfoField{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:700;color:#d6dbe3}.siteInfoField input.select{width:100%;min-height:40px;background:#1f2326fa}.siteInfoEditorActions{margin-top:14px;display:flex;justify-content:flex-end;gap:8px}.navBtn{position:absolute;z-index:18;top:50%;transform:translateY(-50%);width:72px;height:72px;border-radius:999px;border:2px solid rgba(255,255,255,.34);background:#0000007a;color:#fff;font-size:38px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.navBtn:hover{background:#0000009e}.navBtn.left{left:18px}.navBtn.right{right:18px}.navBtn.verticalTop,.navBtn.verticalBottom{right:18px;left:auto}.navBtn.verticalTop{top:calc(50% - 52px)}.navBtn.verticalBottom{top:calc(50% + 52px)}.overlayPanel{position:fixed;right:14px;bottom:14px;z-index:17;display:flex;flex-direction:column;gap:12px;max-width:280px;pointer-events:none}.verticalPanel{background:#00000038;border:1px solid rgba(255,255,255,.08);border-radius:14px;box-shadow:0 8px 24px #00000040;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:10px 12px;min-width:220px;pointer-events:auto}.verticalHead{font-size:16px;font-weight:700}.verticalSub{margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:14px;font-weight:700;color:#fff!important;text-shadow:0 0 6px rgba(0,0,0,1),0 2px 10px rgba(0,0,0,.9);letter-spacing:.2px}.verticalSubHeight{font-size:16px;font-weight:800;color:#fff}.verticalSubMeta{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:4px 8px;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:#ffffff14;box-shadow:0 8px 18px #0000003d}.verticalSubMeta.gps,.trackBadgeSource.gps{background:#22c55e2e;color:#9ef0b4;border-color:#22c55e52}.verticalSubMeta.estimated,.trackBadgeSource.estimated{background:#f59e0b2e;color:#ffd38a;border-color:#f59e0b57}.towerWrap{display:flex;gap:16px;align-items:flex-start;margin-top:12px}.legsWrap{display:flex;gap:10px;align-items:flex-end}.legCol{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer}.legNode{width:24px;height:110px;border-radius:999px;background:#2a3340;position:relative;border:1px solid rgba(255,255,255,.08);transition:transform .12s ease,background .15s ease,border-color .15s ease}.legCol:hover .legNode{transform:translateY(-2px);border-color:#ffffff47}.legNode.active{background:linear-gradient(180deg,#d7332b,#b22a24)}.legLabel{font-size:12px;color:#cfd6df;font-weight:700}.monopole{width:28px;height:150px;border-radius:999px;background:linear-gradient(180deg,#64748b,#374151);border:1px solid rgba(255,255,255,.1)}.tracker{position:relative;width:84px;height:220px;border-radius:16px;border:1px solid var(--line);background:#0f141abf;padding:12px 0;touch-action:none}.trackLine{position:absolute;left:50%;top:18px;bottom:18px;width:6px;transform:translate(-50%);background:#ffffff59!important;border-radius:999px}.trackMarker{position:absolute;left:50%;width:30px;height:30px;transform:translate(-50%,-50%);border-radius:999px;background:var(--accent2);border:3px solid #ffffff!important;box-shadow:0 0 0 4px #d7332b59!important;cursor:grab;touch-action:none}.trackMarker.dragging{cursor:grabbing}.trackBadge{position:absolute;left:calc(100% + 12px);transform:translateY(-50%);padding:8px 10px;min-width:96px;border-radius:12px;background:#0f141af0;border:1px solid rgba(255,255,255,.14);box-shadow:0 12px 26px #00000057;pointer-events:none;white-space:nowrap}.trackBadgeHeight{font-size:15px;font-weight:800;line-height:1.05;color:#fff;text-shadow:0 0 6px rgba(0,0,0,1),0 2px 10px rgba(0,0,0,.9)}.trackBadgeSource{margin-top:5px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:3px 7px;border-radius:999px;border:1px solid rgba(255,255,255,.14);background:#ffffff14}.trackTextTop,.trackTextBottom{position:absolute;left:50%;transform:translate(-50%);font-size:12px;font-weight:800;color:#fff!important;opacity:1!important;text-shadow:0 0 6px rgba(0,0,0,1),0 2px 10px rgba(0,0,0,.9);white-space:nowrap;letter-spacing:.2px}.trackTextTop{top:2px}.trackTextBottom{bottom:2px}.hidden{display:none!important}.sidebarToggle{flex-shrink:0;min-width:36px;height:36px;padding:0 10px}.sidebarReopen{position:absolute;top:14px;left:14px;z-index:30;min-width:40px;height:40px;padding:0 12px}.app.sidebar-collapsed{grid-template-columns:0 1fr}.app.sidebar-collapsed .sidebar{width:0!important;min-width:0!important;border-right:0!important;opacity:0}.app.sidebar-collapsed .sidebarHead,.app.sidebar-collapsed .sidebarBody{display:none}@media (max-width: 1100px){.app{grid-template-columns:280px 1fr}.sceneThumb{width:72px;height:54px}}@media (max-width: 900px){.app{grid-template-columns:1fr}.sidebar{position:fixed;left:0;top:0;bottom:0;width:280px;z-index:30;height:100vh}.titleBlock{max-width:55%}.controls{max-width:42%}.app.sidebar-collapsed .sidebar{transform:translate(-100%);width:280px!important;min-width:280px!important;opacity:0;pointer-events:none}.titleBlock{max-width:58%}.controls{max-width:38%}.siteInfoEditor{left:14px;right:14px;width:auto;top:80px}.siteInfoEditorFields{grid-template-columns:1fr}}
