*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}[data-theme=dark]{--bg: #0d0f12;--surface: #141720;--panel: #1a1e2a;--border: #252b3b;--accent: #f0c040;--accent-dim: #2a2510;--accent-glow: rgba(240,192,64,.15);--accent2: #3d8ef0;--accent2-glow: rgba(61,142,240,.12);--danger: #e05252;--success: #3fc87a;--text: #e8ecf4;--muted: #6b738a;--tag-bg: #1f2535;--photo-bg: #080a0d;--input-bg: #1a1e2a;--match-overlay: rgba(8,10,14,.92);--match-strong: #e8ecf4;--match-bar-bg: #222530;--q-pending-bg: #0e1a2a;--q-assigned-bg: #2a2510;--q-approved-bg: #102418;--q-rejected-bg: #1e0e0e;--skeleton: #1f2535;--skeleton-shine:#252b3b}[data-theme=light]{--bg: #f0ede8;--surface: #ffffff;--panel: #f7f4ef;--border: #ddd8d1;--accent: #c8900a;--accent-dim: #fff8e0;--accent-glow: rgba(200,144,10,.14);--accent2: #1a6fd4;--accent2-glow: rgba(26,111,212,.1);--danger: #cc3333;--success: #1f9e58;--text: #18181a;--muted: #8a8278;--tag-bg: #ece8e1;--photo-bg: #111;--input-bg: #ffffff;--match-overlay: rgba(255,255,255,.94);--match-strong: #18181a;--match-bar-bg: #ddd8d1;--q-pending-bg: #e8f0ff;--q-assigned-bg: #fff8d6;--q-approved-bg: #ecf9f2;--q-rejected-bg: #fdf0f0;--skeleton: #ece8e1;--skeleton-shine:#e4dfd8}html,body{height:100%;background:var(--bg);color:var(--text);font-family:DM Sans,sans-serif;overflow:hidden;transition:background .2s,color .2s}.shell{display:grid;grid-template-rows:52px 1fr;height:100vh}.auth-overlay{position:fixed;inset:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:background .2s}.auth-overlay.hidden{display:none}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:40px 48px;width:100%;max-width:400px;display:flex;flex-direction:column;align-items:center;gap:24px;box-shadow:0 8px 40px #0000004d}.auth-logo{font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:600;letter-spacing:.08em;color:var(--accent)}.auth-logo .slash{color:var(--muted);font-weight:400}.auth-title{font-size:18px;font-weight:600;color:var(--text);text-align:center;margin-top:-8px}.auth-sub{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--muted);text-align:center;line-height:1.7;margin-top:-12px}.btn-google{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:12px 20px;border-radius:7px;cursor:pointer;background:var(--text);color:var(--bg);border:none;font-family:DM Sans,sans-serif;font-size:14px;font-weight:600;transition:all .15s;white-space:nowrap}.btn-google:hover{filter:brightness(.9);transform:translateY(-1px);box-shadow:0 4px 16px #0003}.btn-google svg{flex-shrink:0}.auth-denied-icon{font-size:40px;opacity:.7}.auth-denied-msg{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--muted);text-align:center;line-height:1.8}.auth-denied-msg b{color:var(--danger)}.btn-logout-card{font-family:IBM Plex Mono,monospace;font-size:11px;padding:8px 20px;border-radius:5px;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--muted);transition:all .15s}.btn-logout-card:hover{color:var(--danger);border-color:var(--danger)}.topbar{display:flex;align-items:center;gap:14px;padding:0 20px;background:var(--surface);border-bottom:1px solid var(--border);position:relative;z-index:10;transition:background .2s}.topbar-logo{font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:600;letter-spacing:.08em;color:var(--accent);display:flex;align-items:center;gap:8px}.topbar-logo .slash{color:var(--muted);font-weight:400}.topbar-sep{width:1px;height:20px;background:var(--border);flex-shrink:0}.topbar-title{font-size:12px;color:var(--muted);font-family:IBM Plex Mono,monospace}.topbar-spacer{flex:1}.queue-badge{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--muted);background:var(--panel);border:1px solid var(--border);padding:4px 10px;border-radius:4px;transition:background .2s}.queue-badge b{color:var(--accent)}.api-status{display:flex;align-items:center;gap:6px;font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--muted)}.api-dot{width:6px;height:6px;border-radius:50%;background:var(--muted);flex-shrink:0;transition:background .3s}.api-dot.ok{background:var(--success);box-shadow:0 0 6px var(--success)}.api-dot.err{background:var(--danger);box-shadow:0 0 6px var(--danger)}.api-dot.loading{background:var(--accent);animation:blink .8s infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.admin-chip{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);font-family:IBM Plex Mono,monospace;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-dot{width:7px;height:7px;border-radius:50%;background:var(--success);flex-shrink:0}.theme-toggle{width:32px;height:32px;border-radius:6px;background:var(--panel);border:1px solid var(--border);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:15px;transition:all .15s;flex-shrink:0}.theme-toggle:hover{border-color:var(--accent)}.btn-logout{font-family:IBM Plex Mono,monospace;font-size:10px;padding:4px 10px;border-radius:4px;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--muted);transition:all .15s;flex-shrink:0}.btn-logout:hover{color:var(--danger);border-color:var(--danger)}.main{display:grid;grid-template-columns:300px 1fr;overflow:hidden}.sidebar{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;transition:background .2s}.sidebar-head{padding:12px 14px 10px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.sidebar-head h2{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.12em;color:var(--muted);text-transform:uppercase}.filter-tabs{display:flex;gap:3px}.ftab{font-family:IBM Plex Mono,monospace;font-size:10px;padding:3px 8px;border-radius:3px;cursor:pointer;border:none;background:transparent;color:var(--muted);transition:all .15s}.ftab.active{background:var(--accent-dim);color:var(--accent)}.ftab:hover:not(.active){color:var(--text)}.search-wrap{padding:10px 10px 6px;border-bottom:1px solid var(--border);flex-shrink:0;position:relative}.search-input{width:100%;background:var(--input-bg);border:1px solid var(--border);border-radius:5px;color:var(--text);font-family:IBM Plex Mono,monospace;font-size:11px;padding:7px 32px 7px 30px;outline:none;transition:border .15s,box-shadow .15s,background .2s}.search-input:focus{border-color:var(--accent2);box-shadow:0 0 0 3px var(--accent2-glow)}.search-input::placeholder{color:var(--muted)}.search-icon{position:absolute;left:19px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:13px;pointer-events:none}.search-clear{position:absolute;right:19px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:13px;cursor:pointer;background:none;border:none;display:none;transition:color .15s}.search-clear:hover{color:var(--text)}.search-clear.visible{display:block}.search-count{font-family:IBM Plex Mono,monospace;font-size:9px;color:var(--muted);padding:4px 2px 0}.search-highlight{color:var(--accent2);font-weight:600}.queue-list{overflow-y:auto;flex:1;padding:8px}.queue-list::-webkit-scrollbar{width:3px}.queue-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.q-item{display:grid;grid-template-columns:62px 1fr;gap:10px;padding:9px;border-radius:6px;cursor:pointer;border:1px solid transparent;margin-bottom:4px;transition:all .15s}.q-item:hover{background:var(--panel);border-color:var(--border)}.q-item.active{background:var(--panel);border-color:var(--accent2)}.q-item.pending{opacity:.72}.q-item.approved,.q-item.rejected{opacity:.45}.q-thumb{width:62px;height:46px;border-radius:4px;background:var(--tag-bg);flex-shrink:0;border:1px solid var(--border);overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:18px}.q-thumb img{width:100%;height:100%;object-fit:cover}.q-info{min-width:0;display:flex;flex-direction:column;gap:3px;padding-top:1px}.q-addr{font-size:12px;color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.q-city{font-size:11px;color:var(--muted);font-family:IBM Plex Mono,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.q-meta{display:flex;align-items:center;gap:6px;margin-top:2px}.q-status{font-family:IBM Plex Mono,monospace;font-size:9px;letter-spacing:.06em;padding:2px 6px;border-radius:2px;font-weight:600}.q-status.pending{background:var(--q-pending-bg);color:var(--accent2)}.q-status.assigned{background:var(--q-assigned-bg);color:var(--accent)}.q-status.approved{background:var(--q-approved-bg);color:var(--success)}.q-status.rejected{background:var(--q-rejected-bg);color:var(--danger)}.q-time{font-family:IBM Plex Mono,monospace;font-size:9px;color:var(--muted)}.pagination-bar{display:flex;align-items:center;gap:8px;padding:8px 10px;border-top:1px solid var(--border);flex-shrink:0}.pag-info{font-family:IBM Plex Mono,monospace;font-size:9px;color:var(--muted);flex:1;text-align:center}.pag-reload{font-family:IBM Plex Mono,monospace;font-size:10px;padding:4px 8px;border-radius:3px;cursor:pointer;border:1px solid var(--border);background:var(--tag-bg);color:var(--muted);transition:all .15s}.pag-reload:hover{color:var(--accent2);border-color:var(--accent2)}.load-more-btn{width:100%;font-family:IBM Plex Mono,monospace;font-size:10px;padding:8px;border:1px dashed var(--border);background:transparent;color:var(--muted);cursor:pointer;transition:all .15s;display:none;flex-shrink:0}.load-more-btn.visible{display:block}.load-more-btn:hover{color:var(--accent2);border-color:var(--accent2)}.skeleton{background:var(--skeleton);border-radius:3px;animation:shimmer 1.4s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton{background:linear-gradient(90deg,var(--skeleton) 25%,var(--skeleton-shine) 50%,var(--skeleton) 75%);background-size:200% 100%}.content{display:grid;grid-template-rows:1fr 80px;overflow:hidden}.viewer{display:grid;grid-template-columns:1fr 1fr;overflow:hidden}.pane{position:relative;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--border)}.pane:last-child{border-right:none}.pane-header{display:flex;align-items:center;gap:8px;padding:9px 14px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;z-index:2;transition:background .2s}.pane-label{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.pane-label b{color:var(--text)}.pane-spacer{flex:1}.pane-action{font-family:IBM Plex Mono,monospace;font-size:10px;padding:4px 10px;border-radius:3px;cursor:pointer;border:1px solid var(--border);background:var(--tag-bg);color:var(--muted);transition:all .15s;white-space:nowrap}.pane-action:hover{color:var(--accent2);border-color:var(--accent2)}.photo-stage{flex:1;position:relative;overflow:hidden;background:var(--photo-bg);display:flex;align-items:center;justify-content:center}.photo-stage img{max-width:100%;max-height:100%;object-fit:contain;transition:transform .3s ease}.photo-stage img.zoomed{cursor:zoom-out}.photo-stage img:not(.zoomed){cursor:zoom-in}.rotate-btn{font-family:IBM Plex Mono,monospace;font-size:13px;padding:3px 8px;border-radius:3px;cursor:pointer;border:1px solid var(--border);background:var(--tag-bg);color:var(--muted);transition:all .15s;line-height:1}.rotate-btn:hover{color:var(--accent2);border-color:var(--accent2)}.photo-overlay{position:absolute;bottom:12px;left:12px;right:12px;display:flex;gap:8px;flex-wrap:wrap}.tag{font-family:IBM Plex Mono,monospace;font-size:10px;background:#000000c7;border:1px solid rgba(255,255,255,.1);color:#ccc;padding:4px 8px;border-radius:3px;backdrop-filter:blur(4px)}.tag b{color:#fff}.gps-badge{position:absolute;top:12px;right:12px;font-family:IBM Plex Mono,monospace;font-size:10px;background:#000000e0;border:1px solid var(--accent2);color:var(--accent2);padding:5px 10px;border-radius:3px;display:flex;align-items:center;gap:6px;backdrop-filter:blur(4px)}.gps-dot{width:6px;height:6px;border-radius:50%;background:var(--accent2);animation:pulse 1.8s infinite;flex-shrink:0}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.6)}}.building-badge{position:absolute;top:12px;left:12px;font-family:IBM Plex Mono,monospace;font-size:9px;background:#000000d1;border:1px solid var(--border);color:var(--muted);padding:4px 8px;border-radius:3px;backdrop-filter:blur(4px);max-width:calc(100% - 24px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.building-badge b{color:var(--text)}.sv-stage{flex:1;position:relative;overflow:hidden;background:var(--photo-bg)}#sv-container{width:100%;height:100%}.sv-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--muted)}.sv-placeholder .sv-icon{font-size:44px;opacity:.22}.sv-placeholder p{font-family:IBM Plex Mono,monospace;font-size:12px;text-align:center;line-height:1.7}.sv-date-badge{position:absolute;top:12px;right:12px;font-family:IBM Plex Mono,monospace;font-size:10px;background:#000000c7;border:1px solid rgba(255,255,255,.15);color:#ccc;padding:4px 8px;border-radius:3px;backdrop-filter:blur(4px);display:none;z-index:2}.sv-date-badge.visible{display:block}[data-theme=light] .sv-date-badge{background:#ffffffe0;border-color:var(--border);color:var(--muted)}.match-indicator{position:absolute;bottom:12px;left:12px;right:12px;background:var(--match-overlay);border:1px solid var(--border);border-radius:6px;padding:10px 14px;display:flex;align-items:center;gap:10px;backdrop-filter:blur(8px);font-family:IBM Plex Mono,monospace;font-size:11px}.match-score{font-size:20px;font-weight:600}.match-score.high{color:var(--success)}.match-score.mid{color:var(--accent)}.match-score.low{color:var(--danger)}.match-text{flex:1}.match-text strong{display:block;font-size:11px;color:var(--match-strong);margin-bottom:2px}.match-text span{color:var(--muted);font-size:10px}.match-bar-wrap{width:80px}.match-bar-bg{width:100%;height:4px;background:var(--match-bar-bg);border-radius:2px}.match-bar{height:4px;border-radius:2px;transition:width .5s ease}.detail-strip{background:var(--surface);border-top:1px solid var(--border);display:grid;grid-template-columns:1fr auto;align-items:center;padding:0 20px;gap:20px;transition:background .2s}.detail-fields{display:flex;align-items:center;gap:20px;overflow-x:auto}.detail-fields::-webkit-scrollbar{display:none}.dfield{display:flex;flex-direction:column;gap:3px;flex-shrink:0}.dfield label{font-family:IBM Plex Mono,monospace;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.dfield value{font-size:12px;color:var(--text);font-family:IBM Plex Mono,monospace}.dfield value.mono-sm{font-size:10px;opacity:.75}.dfield value.copyable{cursor:pointer;border-bottom:1px dashed var(--border);transition:all .15s}.dfield value.copyable:hover{color:var(--accent2);border-color:var(--accent2);opacity:1}.action-bar{display:flex;align-items:center;gap:8px;flex-shrink:0}.btn{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;letter-spacing:.06em;padding:9px 20px;border-radius:5px;cursor:pointer;border:none;display:flex;align-items:center;gap:7px;transition:all .15s;white-space:nowrap}.btn-approve{background:var(--success);color:#061510}.btn-approve:hover{filter:brightness(1.14);transform:translateY(-1px);box-shadow:0 4px 16px #3fc87a4d}.btn-delete{background:var(--danger);color:#160303}.btn-delete:hover{filter:brightness(1.12);transform:translateY(-1px);box-shadow:0 4px 16px #e052524d}.btn-skip{background:var(--tag-bg);color:var(--muted);border:1px solid var(--border)}.btn-skip:hover{color:var(--text);border-color:var(--muted)}.btn:disabled{opacity:.35;cursor:not-allowed;transform:none!important;box-shadow:none!important;filter:none!important}.note-input{background:var(--input-bg);border:1px solid var(--border);color:var(--text);font-family:IBM Plex Mono,monospace;font-size:11px;padding:8px 12px;border-radius:4px;outline:none;width:190px;transition:border .15s}.note-input:focus{border-color:var(--accent2)}.note-input::placeholder{color:var(--muted)}.user-note-card{position:absolute;top:12px;left:12px;max-width:min(300px,calc(100% - 24px));background:#000000e0;border:1px solid var(--accent);border-radius:6px;padding:10px 13px;backdrop-filter:blur(8px);animation:noteIn .3s cubic-bezier(.34,1.4,.64,1)}@keyframes noteIn{0%{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:none}}.user-note-card-label{font-family:IBM Plex Mono,monospace;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:5px}.user-note-card-body{font-size:12px;line-height:1.55;color:#f0d4a0}.note-pill{font-family:IBM Plex Mono,monospace;font-size:9px;letter-spacing:.05em;background:var(--accent-dim);color:var(--accent);padding:3px 7px;border-radius:3px;border:1px solid var(--accent);flex-shrink:0}.q-note-dot{width:5px;height:5px;border-radius:50%;background:var(--accent);flex-shrink:0;box-shadow:0 0 5px var(--accent)}[data-theme=light] .user-note-card{background:#fffaebf5}[data-theme=light] .user-note-card-body{color:#7a4e00}.addr-overlay{position:fixed;inset:0;z-index:200;background:#0000008c;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}.addr-overlay.hidden{display:none}.addr-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;width:100%;max-width:860px;overflow:hidden;box-shadow:0 16px 48px #0006;display:flex;flex-direction:column;max-height:85vh}.addr-body{display:flex;flex:1;overflow:hidden;min-height:0}.addr-map{flex:1;min-width:0;background:var(--panel)}.addr-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.addr-head h3{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;color:var(--text)}.addr-head-sub{font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--muted);margin-top:2px}.addr-close{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;line-height:1;padding:0 2px}.addr-close:hover{color:var(--text)}.addr-toolbar{padding:10px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;flex-shrink:0}.addr-toolbar label{font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--muted);flex-shrink:0}.addr-radius-tabs{display:flex;gap:4px}.addr-rtab{font-family:IBM Plex Mono,monospace;font-size:10px;padding:3px 9px;border-radius:3px;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--muted);transition:all .15s}.addr-rtab.active{background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}.addr-results{overflow-y:auto;width:300px;flex-shrink:0;border-right:1px solid var(--border)}.addr-results::-webkit-scrollbar{width:3px}.addr-results::-webkit-scrollbar-thumb{background:var(--border)}.addr-group{border-bottom:1px solid var(--border);padding:10px 18px}.addr-group-name{font-size:12px;font-weight:600;color:var(--text);margin-bottom:7px}.addr-chips{display:flex;flex-wrap:wrap;gap:5px}.addr-chip{font-family:IBM Plex Mono,monospace;font-size:11px;padding:4px 10px;border-radius:4px;cursor:pointer;border:1px solid var(--border);background:var(--tag-bg);color:var(--muted);transition:all .15s}.addr-chip:hover{color:var(--text);border-color:var(--muted)}.addr-chip.selected{background:var(--accent-dim);color:var(--accent);border-color:var(--accent);font-weight:600}.addr-chip.current{background:var(--accent2-glow);color:var(--accent2);border-color:var(--accent2)}.addr-loading{padding:28px;text-align:center;font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--muted)}.addr-foot{padding:12px 18px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.addr-foot-info{font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--muted)}.addr-foot-info b{color:var(--accent)}.btn-apply-addr{font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:600;padding:7px 18px;border-radius:5px;cursor:pointer;border:none;background:var(--accent);color:#0a0800;transition:all .15s}.btn-apply-addr:hover{filter:brightness(1.1)}.btn-apply-addr:disabled{opacity:.35;cursor:not-allowed}.fix-btn{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;letter-spacing:.06em;padding:9px 20px;border-radius:5px;cursor:pointer;border:1px solid var(--border);background:var(--tag-bg);color:var(--muted);transition:all .15s;white-space:nowrap}.fix-btn:hover{color:var(--accent);border-color:var(--accent)}.addr-corrected-badge{font-family:IBM Plex Mono,monospace;font-size:9px;background:var(--accent-dim);color:var(--accent);padding:2px 6px;border-radius:3px;border:1px solid var(--accent)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--muted);gap:12px;grid-column:1/-1}.empty-state .icon{font-size:50px;opacity:.18}.empty-state p{font-family:IBM Plex Mono,monospace;font-size:12px;text-align:center;line-height:1.7}.empty-state .retry-btn{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--accent2);border:1px solid var(--accent2);background:none;padding:6px 14px;border-radius:3px;cursor:pointer;margin-top:4px;transition:all .15s}.empty-state .retry-btn:hover{background:var(--accent2);color:#fff}.toast{position:fixed;bottom:24px;right:24px;font-family:IBM Plex Mono,monospace;font-size:12px;padding:12px 20px;border-radius:5px;display:flex;align-items:center;gap:10px;transform:translateY(80px);opacity:0;transition:all .3s cubic-bezier(.34,1.56,.64,1);z-index:999;pointer-events:none}.toast.show{transform:translateY(0);opacity:1}.toast.approve{background:var(--success);color:#061510}.toast.delete{background:var(--danger);color:#160303}.toast.skip{background:var(--panel);color:var(--text);border:1px solid var(--border)}.toast.info{background:var(--tag-bg);color:var(--text);border:1px solid var(--border)}::-webkit-scrollbar{width:3px;height:3px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}@keyframes fadeSlide{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.viewer{animation:fadeSlide .25s ease}[data-theme=light] .match-indicator{background:#fffffff0}[data-theme=light] .tag{background:#000000a6}[data-theme=light] .building-badge{background:#ffffffe0;color:var(--muted);border-color:var(--border)}[data-theme=light] .gps-badge{background:#ffffffeb}.map-overlay{position:fixed;inset:0;z-index:200;background:#0000008c;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}.map-overlay.hidden{display:none}.map-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;width:min(760px,96vw);height:min(560px,90vh);overflow:hidden;box-shadow:0 16px 48px #0006;display:flex;flex-direction:column}.map-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.map-head h3{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;color:var(--text)}.map-head-sub{font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--muted);margin-top:2px}.map-toolbar{padding:8px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap}.map-draw-btn{font-family:IBM Plex Mono,monospace;font-size:10px;padding:4px 12px;border-radius:3px;cursor:pointer;border:1px solid var(--accent2);background:var(--accent2-glow);color:var(--accent2);transition:all .15s}.map-draw-btn:hover,.map-draw-btn.active{background:var(--accent2);color:#fff}.map-clear-rect-btn{font-family:IBM Plex Mono,monospace;font-size:10px;padding:4px 10px;border-radius:3px;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--muted);transition:all .15s}.map-clear-rect-btn:hover{color:var(--danger);border-color:var(--danger)}.map-hint{font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--muted);margin-left:4px}#leaflet-map{flex:1;min-height:0}.map-foot{padding:10px 18px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;gap:12px}.map-filter-btn{font-family:IBM Plex Mono,monospace;font-size:10px;padding:2px 7px;border-radius:3px;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--muted);transition:all .15s;line-height:1.5}.map-filter-btn:hover,.map-filter-btn.active{border-color:var(--accent2);color:var(--accent2);background:var(--accent2-glow)}.map-status-tabs{display:flex;gap:3px}.map-stab{display:flex;align-items:center;gap:5px;font-family:IBM Plex Mono,monospace;font-size:10px;padding:3px 8px;border-radius:3px;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--muted);transition:all .15s}.map-stab:hover{color:var(--text)}.map-stab.active{background:var(--tag-bg);color:var(--text);border-color:var(--muted)}.map-legend-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.map-limit-select{font-family:IBM Plex Mono,monospace;font-size:10px;background:var(--input-bg);border:1px solid var(--border);color:var(--muted);padding:3px 6px;border-radius:3px;cursor:pointer;outline:none;transition:border .15s}.map-limit-select:hover,.map-limit-select:focus{border-color:var(--accent2);color:var(--text)}.map-photo-count{font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--accent2);background:var(--accent2-glow);border:1px solid var(--accent2);padding:2px 8px;border-radius:3px;white-space:nowrap}.leaflet-photo-tip{font-family:IBM Plex Mono,monospace;font-size:11px;background:var(--surface,#141720);color:var(--text,#e8ecf4);border:1px solid var(--border,#252b3b);border-radius:4px;padding:4px 8px;box-shadow:0 2px 8px #0006}.leaflet-photo-tip:before{display:none}.bbox-bar{padding:6px 10px;border-bottom:1px solid var(--border);background:var(--accent2-glow);display:flex;align-items:center;gap:8px;flex-shrink:0}.bbox-bar-label{font-family:IBM Plex Mono,monospace;font-size:10px;color:var(--accent2);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bbox-bar-clear{font-family:IBM Plex Mono,monospace;font-size:10px;padding:2px 7px;border-radius:3px;cursor:pointer;border:1px solid var(--accent2);background:transparent;color:var(--accent2);transition:all .15s;flex-shrink:0}.bbox-bar-clear:hover{background:var(--danger);border-color:var(--danger);color:#fff}
