:root{--bg:#111;--panel:rgba(20,20,22,.9);--fg:#eee;--muted:#9a9a9a;--accent:#4da3ff}
*{box-sizing:border-box}
html,body{height:100%;margin:0;background:var(--bg);color:var(--fg);font:14px/1.45 -apple-system,system-ui,Segoe UI,sans-serif}
nav{position:fixed;top:0;left:0;right:0;height:48px;display:flex;align-items:center;gap:6px;padding:0 14px;background:var(--panel);backdrop-filter:blur(8px);z-index:2000;border-bottom:1px solid #2a2a2a}
.brand{font-weight:600;margin-right:14px}
.tab{background:none;border:0;color:var(--muted);font:inherit;padding:8px 12px;border-radius:8px;cursor:pointer}
.tab:hover{color:var(--fg)} .tab.active{color:var(--fg);background:#2a2a2e}
.spacer{flex:1}
select{background:#1d1d20;color:var(--fg);border:1px solid #333;border-radius:6px;padding:6px 8px;font:inherit}
main{position:absolute;top:48px;left:0;right:0;bottom:0}
.view{display:none;position:absolute;inset:0} .view.active{display:block}
#leaflet,#cesium{position:absolute;inset:0}
.panel{position:absolute;top:12px;right:12px;z-index:1000;background:var(--panel);padding:10px 12px;border-radius:10px;min-width:220px;max-width:320px;box-shadow:0 2px 12px rgba(0,0,0,.5)}
.panel label{display:block;margin:4px 0}
.panel input[type=range]{width:100%}
.panel h4{margin:0 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.cards{padding:20px;display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;overflow:auto;height:100%}
.card{background:#1a1a1d;border:1px solid #2a2a2e;border-radius:12px;overflow:hidden}
.card img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block;background:#000}
.card .body{padding:12px 14px}
.card h3{margin:0 0 6px;font-size:15px}
.card .meta{color:var(--muted);font-size:13px}
.card .actions{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}
.card a,.card button{font:inherit;font-size:13px;color:var(--fg);background:#2a2a2e;border:0;border-radius:6px;padding:6px 10px;text-decoration:none;cursor:pointer}
.card a:hover,.card button:hover{background:#3a3a40}
.leaflet-container{background:#000}
#potree_render_area{position:absolute;inset:0}
.potree_container .potree_sidebar_container{z-index:1000}
.empty{padding:40px;color:var(--muted);text-align:center}
