/* 3D-Viewer – Modell, Punktwolke, Höhen */
.v3d{background:#0d1418;border:1px solid #23313a;color:#cfd8dc;position:relative}
.v3d-bar{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #23313a}
.v3d-seg{display:inline-flex;border:1.5px solid #3a4a54;border-radius:999px;padding:3px;gap:2px}
.v3d-seg button{font:600 14px/1 var(--f-body);color:#cfd8dc;background:transparent;border:0;border-radius:999px;padding:9px 16px;min-height:38px;cursor:pointer;white-space:nowrap}
.v3d-seg button:hover{color:#fff}
.v3d-seg button[aria-pressed=true]{background:var(--accent);color:#fff}
.v3d-tools{display:flex;flex-wrap:wrap;gap:6px}
.v3d-tools button{display:inline-flex;align-items:center;gap:7px;font:600 13.5px/1 var(--f-body);color:#e8f4ff;background:transparent;border:1.5px solid #3a4a54;border-radius:999px;padding:8px 13px;min-height:38px;cursor:pointer;white-space:nowrap}
.v3d-tools button:hover{border-color:var(--accent);color:var(--accent)}
.v3d-tools button[aria-pressed=true]{border-color:var(--accent);background:rgba(255,107,34,.16);color:#ffb38a}
.v3d-tools svg{width:17px;height:17px;flex:none}
.v3d-tools .ico{padding:8px 10px}
.v3d-stage{position:relative;aspect-ratio:16/9;max-height:78vh;min-height:360px;background:#0d1418;overflow:hidden}
.v3d-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab;outline:none}
.v3d-stage canvas:active{cursor:grabbing}
.v3d-stage.is-measure canvas{cursor:crosshair}
.v3d-stage canvas:focus-visible{box-shadow:inset 0 0 0 3px var(--accent)}
.v3d-ov{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.v3d-ov .ml{stroke:#ff6b22;stroke-width:3;stroke-linecap:round;filter:drop-shadow(0 0 2px rgba(0,0,0,.8))}
.v3d-ov .mp{fill:#fff;stroke:#ff6b22;stroke-width:3}
.v3d-labels{position:absolute;inset:0;pointer-events:none}
.v3d-lbl{position:absolute;transform:translate(-50%,-140%);background:#ff6b22;color:#fff;font:700 14px/1.2 var(--f-mono);padding:6px 9px;border-radius:4px;white-space:nowrap;box-shadow:0 4px 14px rgba(0,0,0,.45)}
.v3d-lbl.vol{display:flex;flex-direction:column;gap:2px;align-items:flex-start;font-size:15px}
.v3d-lbl.vol b{font:500 10.5px/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;opacity:.9}
.v3d-lbl.pit{background:#2a9bff}
.v3d-tag{position:absolute;left:12px;top:12px;font:500 11px/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:#e8f4ff;background:rgba(10,16,19,.72);padding:6px 9px;border-radius:3px;pointer-events:none}
.v3d-tag i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#ff5a1f;margin-right:7px;vertical-align:1px}
.v3d-legend{position:absolute;right:12px;top:12px;background:rgba(10,16,19,.78);padding:8px 10px;border-radius:3px;font:500 11px/1.2 var(--f-mono);color:#cfd8dc;display:flex;flex-direction:column;gap:6px;pointer-events:none;min-width:150px}
.v3d-legend[hidden]{display:none}
.v3d-legend .grad{height:10px;border-radius:2px;background:linear-gradient(90deg,#213d9e,#1a9ed9,#47c75c,#fad633,#e6401f)}
.v3d-legend .ends{display:flex;justify-content:space-between}
.v3d-size{position:absolute;right:12px;bottom:12px;background:rgba(10,16,19,.78);padding:7px 10px;border-radius:3px;font:500 11px/1 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:#cfd8dc}
.v3d-size[hidden]{display:none}
.v3d-size label{display:flex;align-items:center;gap:8px}
.v3d-size input{width:110px;accent-color:var(--accent)}
.v3d-load{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:20px;font:500 13px/1.5 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:#9fb0b8;background:radial-gradient(70% 70% at 50% 50%,#13202a 0,#0d1418 100%)}
.v3d-load[hidden]{display:none}
.v3d-info{display:flex;flex-wrap:wrap;gap:6px 20px;justify-content:space-between;align-items:center;padding:11px 14px;border-top:1px solid #23313a;font-size:14.5px;line-height:1.45;min-height:46px}
.v3d-stat{font:500 12px/1.3 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:#9fb0b8;font-variant-numeric:tabular-nums}
.v3d-msg{color:#cfd8dc}
.v3d-msg b{color:#fff}
.v3d-msg .hv{color:#ff8445}.v3d-msg .pv{color:#5cb6ff}
.v3d:fullscreen{display:flex;flex-direction:column;border:0}
.v3d:fullscreen .v3d-stage{flex:1;aspect-ratio:auto;max-height:none}
.v3d.is-full{position:fixed;inset:0;z-index:300;display:flex;flex-direction:column}
.v3d.is-full .v3d-stage{flex:1;aspect-ratio:auto;max-height:none}
.v3d-note{margin-top:10px;font-size:13.5px;color:var(--ink3)}
.v3d-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px}
.v3d-modes article{background:var(--surface);border:1px solid var(--line);padding:24px;display:flex;flex-direction:column;gap:10px;min-width:0}
.v3d-modes p{color:var(--ink2);font-size:16px}
.v3d-modes button{align-self:flex-start;margin-top:auto;font:700 15px var(--f-body);color:var(--ink);background:none;border:0;border-bottom:2px solid var(--accent);padding:2px 0;cursor:pointer}
.v3d-modes button:hover{color:var(--accent)}
.fmt{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.fmt span{font:500 11.5px/1 var(--f-mono);letter-spacing:.06em;border:1px solid var(--line);padding:5px 7px;border-radius:3px;color:var(--ink2)}
@media (max-width:900px){.v3d-modes{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
  .v3d-stage{aspect-ratio:4/5;max-height:72vh;min-height:320px}
  .v3d-bar{padding:10px}
  .v3d-seg{width:100%}
  .v3d-seg button{flex:1;padding:9px 6px;font-size:13.5px}
  .v3d-tools{width:100%;gap:5px}
  .v3d-tools button{padding:8px 10px;font-size:13px}
  .v3d-tools .lbl-hide{display:none}
  .v3d-legend{min-width:120px}
  .v3d-info{font-size:13.5px}
}
