Files
web-cad/mockup/editor.html
T

1134 lines
100 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="de" data-theme="light">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>web-cad Festsaal Stuttgart</title>
<meta name="description" content="Web-basiertes 2D-CAD für Event-Bestuhlungspläne">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="assets/styles.css">
<link rel="stylesheet" href="assets/layout.css">
</head>
<body>
<a href="#canvas-area" class="skip-link">Zum Hauptbereich springen</a>
<div class="app" id="app">
<!-- ==================== TOPBAR ==================== -->
<header class="topbar" role="banner">
<div class="topbar-left">
<button class="hamburger-btn" id="hamburger-btn" aria-label="Werkzeuge öffnen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>
</button>
<div class="app-logo" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3h18v18H3z"/><path d="M3 9h18"/><path d="M9 21V9"/></svg>
</div>
<span class="app-name">web-cad</span>
<span style="color: var(--color-border-strong); margin: 0 4px;">|</span>
<button class="project-name" aria-label="Projekt wechseln">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h7a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg>
<span>Festsaal Stuttgart</span>
<svg class="caret" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<span class="saved-badge" aria-label="Status: Alle Änderungen gespeichert">Gespeichert</span>
</div>
<div class="topbar-right">
<button class="icon-btn-top" aria-label="Rückgängig (Strg+Z)" title="Rückgängig (Strg+Z)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7v6h6"/><path d="M21 17a9 9 0 0 0-15-6.7L3 13"/></svg>
</button>
<button class="icon-btn-top" aria-label="Wiederherstellen (Strg+Y)" title="Wiederherstellen (Strg+Y)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 7v6h-6"/><path d="M3 17a9 9 0 0 1 15-6.7L21 13"/></svg>
</button>
<span style="width: 1px; height: 20px; background: var(--color-border); margin: 0 4px;"></span>
<button class="icon-btn-top" aria-label="Versionen" title="Versionsverlauf">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>
</button>
<button class="icon-btn-top" aria-label="Teilen" title="Projekt teilen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><line x1="8.59" y1="13.51" x2="15.42" y2="17.49"/><line x1="15.41" y1="6.51" x2="8.59" y2="10.49"/></svg>
</button>
<span style="width: 1px; height: 20px; background: var(--color-border); margin: 0 4px;"></span>
<button class="icon-btn-top" id="theme-toggle" aria-label="Hell/Dunkel umschalten" title="Theme wechseln">
<svg id="theme-icon-light" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/></svg>
</button>
<button class="icon-btn-top" aria-label="Hilfe" title="Hilfe (F1)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
</button>
<span style="width: 1px; height: 20px; background: var(--color-border); margin: 0 4px;"></span>
<select class="lang-select" aria-label="Sprache wählen">
<option value="de" selected>DE</option>
<option value="en">EN</option>
</select>
<button class="icon-btn-top" aria-label="Benachrichtigungen" title="Benachrichtigungen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></svg>
</button>
<div class="avatar" aria-label="Benutzer Leopold M." title="Leopold M.">LM</div>
</div>
</header>
<!-- ==================== RIBBON ==================== -->
<nav class="ribbon" role="navigation" aria-label="Hauptwerkzeuge">
<div class="ribbon-tabs" role="tablist">
<button class="ribbon-tab active" role="tab" aria-selected="true" data-tab="start">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
<span>Start</span>
</button>
<button class="ribbon-tab" role="tab" data-tab="insert">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="12" y1="8" x2="12" y2="16"/><line x1="8" y1="12" x2="16" y2="12"/></svg>
<span>Einfügen</span>
</button>
<button class="ribbon-tab" role="tab" data-tab="format">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7V4h16v3"/><path d="M9 20h6"/><path d="M12 4v16"/></svg>
<span>Format</span>
</button>
<button class="ribbon-tab" role="tab" data-tab="view">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z"/><circle cx="12" cy="12" r="3"/></svg>
<span>Ansicht</span>
</button>
<button class="ribbon-tab" role="tab" data-tab="tools">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>
<span>Extras</span>
</button>
<button class="ribbon-tab" role="tab" data-tab="ki" style="color: var(--color-ki);">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>
<span>KI</span>
</button>
</div>
<div class="ribbon-content" id="ribbon-content">
<!-- Start tab: Datei / Bearbeiten -->
<div class="ribbon-group compact-mobile" data-ribbon-group="start">
<div class="ribbon-group-btns">
<button class="ribbon-btn" title="Neues Projekt (Strg+N)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="9" y1="15" x2="15" y2="15"/></svg>
<span>Neu</span>
</button>
<button class="ribbon-btn" title="Öffnen (Strg+O)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h7a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg>
<span>Öffnen</span>
</button>
<button class="ribbon-btn" title="Speichern (Strg+S)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>
<span>Speichern</span>
</button>
</div>
<div class="ribbon-group-label">Datei</div>
</div>
<div class="ribbon-divider"></div>
<div class="ribbon-group">
<div class="ribbon-group-btns">
<button class="ribbon-btn" title="Rückgängig (Strg+Z)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7v6h6"/><path d="M21 17a9 9 0 0 0-15-6.7L3 13"/></svg>
<span>Undo</span>
</button>
<button class="ribbon-btn" title="Wiederherstellen (Strg+Y)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 7v6h-6"/><path d="M3 17a9 9 0 0 1 15-6.7L21 13"/></svg>
<span>Redo</span>
</button>
<button class="ribbon-btn" title="Kopieren (Strg+C)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
<span>Kopieren</span>
</button>
<button class="ribbon-btn" title="Einfügen (Strg+V)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><rect x="8" y="2" width="8" height="4" rx="1"/></svg>
<span>Einfügen</span>
</button>
</div>
<div class="ribbon-group-label">Bearbeiten</div>
</div>
<div class="ribbon-divider"></div>
<div class="ribbon-group">
<div class="ribbon-group-btns">
<button class="ribbon-btn" title="Zoom anpassen (F)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7V5a2 2 0 0 1 2-2h2"/><path d="M17 3h2a2 2 0 0 1 2 2v2"/><path d="M21 17v2a2 2 0 0 1-2 2h-2"/><path d="M7 21H5a2 2 0 0 1-2-2v-2"/><line x1="7" y1="12" x2="17" y2="12"/></svg>
<span>Zoom Fit</span>
</button>
<button class="ribbon-btn" title="100% (1:1)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/><line x1="11" y1="8" x2="11" y2="14"/><line x1="8" y1="11" x2="14" y2="11"/></svg>
<span>100%</span>
</button>
<button class="ribbon-btn" title="Grid ein/aus (F7)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="0"/><line x1="3" y1="9" x2="21" y2="9"/><line x1="3" y1="15" x2="21" y2="15"/><line x1="9" y1="3" x2="9" y2="21"/><line x1="15" y1="3" x2="15" y2="21"/></svg>
<span>Grid</span>
</button>
<button class="ribbon-btn" title="Layer-Manager">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/></svg>
<span>Layer</span>
</button>
</div>
<div class="ribbon-group-label">Ansicht</div>
</div>
<div class="ribbon-divider"></div>
<div class="ribbon-group">
<div class="ribbon-group-btns">
<button class="ribbon-btn" title="Messwerkzeug">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21.3 8.7 8.7 21.3a1 1 0 0 1-1.4 0L2.7 16.7a1 1 0 0 1 0-1.4L15.3 2.7a1 1 0 0 1 1.4 0l4.6 4.6a1 1 0 0 1 0 1.4z"/><path d="m7.5 10.5 2 2"/><path d="m10.5 7.5 2 2"/><path d="m13.5 4.5 2 2"/><path d="m4.5 13.5 2 2"/></svg>
<span>Messen</span>
</button>
<button class="ribbon-btn" title="Suchen (Strg+F)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
<span>Suchen</span>
</button>
<button class="ribbon-btn" style="color: var(--color-ki);" title="KI Copilot (Ctrl+K)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>
<span>KI</span>
</button>
<button class="ribbon-btn" title="Plugins">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v6m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"/><path d="M12 8a6 6 0 0 0-6 6c0 3 2 4 2 6h8c0-2 2-3 2-6a6 6 0 0 0-6-6z"/></svg>
<span>Plugins</span>
</button>
</div>
<div class="ribbon-group-label">Extras</div>
</div>
</div>
</nav>
<!-- ==================== MAIN ==================== -->
<main class="main" role="main">
<!-- LEFT SIDEBAR (Tool palette 2-col) -->
<aside class="leftbar" aria-label="Werkzeugpalette">
<div class="leftbar-header">
<span class="leftbar-title">Werkzeuge</span>
<button class="leftbar-toggle" id="leftbar-toggle" aria-label="Linke Leiste ausblenden">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"/></svg>
</button>
</div>
<div class="tool-section">
<div class="tool-section-label">Auswählen / Anzeigen</div>
<div class="tool-grid">
<button class="tool-btn active" data-tool="select" title="Auswählen (V)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="m3 3 7.07 16.97 2.51-7.39 7.39-2.51L3 3z"/><path d="m13 13 6 6"/></svg>
<span class="tool-btn-label">Auswahl</span>
<span class="tool-btn-kbd">V</span>
</button>
<button class="tool-btn" data-tool="pan" title="Pan (P / Leertaste)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M18 11V6a2 2 0 0 0-2-2 2 2 0 0 0-2 2"/><path d="M14 10V4a2 2 0 0 0-2-2 2 2 0 0 0-2 2v2"/><path d="M10 10.5V6a2 2 0 0 0-2-2 2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg>
<span class="tool-btn-label">Pan</span>
<span class="tool-btn-kbd">P</span>
</button>
<button class="tool-btn" data-tool="zoom-win" title="Zoom-Fenster (Z)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7V5a2 2 0 0 1 2-2h2"/><path d="M17 3h2a2 2 0 0 1 2 2v2"/><path d="M21 17v2a2 2 0 0 1-2 2h-2"/><path d="M7 21H5a2 2 0 0 1-2-2v-2"/><line x1="7" y1="12" x2="17" y2="12"/></svg>
<span class="tool-btn-label">Zoom</span>
<span class="tool-btn-kbd">Z</span>
</button>
<button class="tool-btn" data-tool="measure" title="Messen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21.3 8.7 8.7 21.3a1 1 0 0 1-1.4 0L2.7 16.7a1 1 0 0 1 0-1.4L15.3 2.7a1 1 0 0 1 1.4 0l4.6 4.6a1 1 0 0 1 0 1.4z"/><path d="m7.5 10.5 2 2"/><path d="m10.5 7.5 2 2"/></svg>
<span class="tool-btn-label">Messen</span>
<span class="tool-btn-kbd">M</span>
</button>
</div>
</div>
<div class="tool-section">
<div class="tool-section-label">Zeichnen</div>
<div class="tool-grid">
<button class="tool-btn" data-tool="line" title="Linie (L)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="19" x2="19" y2="5"/></svg>
<span class="tool-btn-label">Linie</span>
<span class="tool-btn-kbd">L</span>
</button>
<button class="tool-btn" data-tool="polyline" title="Polylinie (PL)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 14 15 20 7"/></svg>
<span class="tool-btn-label">Polylinie</span>
<span class="tool-btn-kbd">PL</span>
</button>
<button class="tool-btn" data-tool="rect" title="Rechteck (REC)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="5" width="18" height="14" rx="1"/></svg>
<span class="tool-btn-label">Rechteck</span>
<span class="tool-btn-kbd">REC</span>
</button>
<button class="tool-btn" data-tool="circle" title="Kreis (C)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/></svg>
<span class="tool-btn-label">Kreis</span>
<span class="tool-btn-kbd">C</span>
</button>
<button class="tool-btn" data-tool="arc" title="Bogen (A)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z"/><path d="M3 12a9 9 0 0 1 9-9"/></svg>
<span class="tool-btn-label">Bogen</span>
<span class="tool-btn-kbd">A</span>
</button>
<button class="tool-btn" data-tool="text" title="Text (T)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 7 4 4 20 4 20 7"/><line x1="9" y1="20" x2="15" y2="20"/><line x1="12" y1="4" x2="12" y2="20"/></svg>
<span class="tool-btn-label">Text</span>
<span class="tool-btn-kbd">T</span>
</button>
<button class="tool-btn" data-tool="dim" title="Bemaßung (DIM)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 3H3l3 18 3-9 6 9 3-9 3 9 3-18z"/><line x1="3" y1="3" x2="21" y2="21"/></svg>
<span class="tool-btn-label">Bemaßung</span>
<span class="tool-btn-kbd">DIM</span>
</button>
<button class="tool-btn" data-tool="hatch" title="Schraffur (H)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="0"/><line x1="3" y1="9" x2="9" y2="3"/><line x1="9" y1="21" x2="21" y2="9"/><line x1="15" y1="21" x2="21" y2="15"/></svg>
<span class="tool-btn-label">Schraffur</span>
<span class="tool-btn-kbd">H</span>
</button>
</div>
</div>
<div class="tool-section">
<div class="tool-section-label">Bearbeiten</div>
<div class="tool-grid">
<button class="tool-btn" data-tool="move" title="Verschieben (M)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="5 9 2 12 5 15"/><polyline points="9 5 12 2 15 5"/><polyline points="15 19 12 22 9 19"/><polyline points="19 9 22 12 19 15"/><line x1="2" y1="12" x2="22" y2="12"/><line x1="12" y1="2" x2="12" y2="22"/></svg>
<span class="tool-btn-label">Move</span>
<span class="tool-btn-kbd">M</span>
</button>
<button class="tool-btn" data-tool="copy" title="Kopieren (CO)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
<span class="tool-btn-label">Copy</span>
<span class="tool-btn-kbd">CO</span>
</button>
<button class="tool-btn" data-tool="rotate" title="Rotieren (RO)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><polyline points="1 20 1 14 7 14"/><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/></svg>
<span class="tool-btn-label">Rotate</span>
<span class="tool-btn-kbd">RO</span>
</button>
<button class="tool-btn" data-tool="scale" title="Skalieren (SC)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 3 21 3 21 9"/><polyline points="9 21 3 21 3 15"/><line x1="21" y1="3" x2="14" y2="10"/><line x1="3" y1="21" x2="10" y2="14"/></svg>
<span class="tool-btn-label">Scale</span>
<span class="tool-btn-kbd">SC</span>
</button>
<button class="tool-btn" data-tool="mirror" title="Spiegeln (MI)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v18"/><path d="M5 8l5-5 5 5"/><path d="M5 16l5 5 5-5"/></svg>
<span class="tool-btn-label">Mirror</span>
<span class="tool-btn-kbd">MI</span>
</button>
<button class="tool-btn" data-tool="trim" title="Trimmen (TR)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="3"/><circle cx="6" cy="18" r="3"/><line x1="20" y1="4" x2="8.12" y2="15.88"/><line x1="14.47" y1="14.48" x2="20" y2="20"/><line x1="8.12" y1="8.12" x2="12" y2="12"/></svg>
<span class="tool-btn-label">Trim</span>
<span class="tool-btn-kbd">TR</span>
</button>
<button class="tool-btn" data-tool="offset" title="Versatz (O)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h12"/><path d="M3 12h18"/><path d="M3 18h12"/><path d="M21 6v12"/></svg>
<span class="tool-btn-label">Offset</span>
<span class="tool-btn-kbd">O</span>
</button>
<button class="tool-btn" data-tool="erase" title="Löschen (E)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/></svg>
<span class="tool-btn-label">Löschen</span>
<span class="tool-btn-kbd">E</span>
</button>
</div>
</div>
<div class="tool-section">
<div class="tool-section-label">Bestuhlung</div>
<div class="tool-grid">
<button class="tool-btn" data-tool="row-seat" title="Reihen-Bestuhlung">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="5" width="4" height="3" rx="0.5"/><rect x="10" y="5" width="4" height="3" rx="0.5"/><rect x="17" y="5" width="4" height="3" rx="0.5"/><rect x="3" y="11" width="4" height="3" rx="0.5"/><rect x="10" y="11" width="4" height="3" rx="0.5"/><rect x="17" y="11" width="4" height="3" rx="0.5"/><rect x="3" y="17" width="4" height="3" rx="0.5"/><rect x="10" y="17" width="4" height="3" rx="0.5"/><rect x="17" y="17" width="4" height="3" rx="0.5"/></svg>
<span class="tool-btn-label">Reihe</span>
<span class="tool-btn-kbd">R</span>
</button>
<button class="tool-btn" data-tool="block-seat" title="Block-Bestuhlung">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="1"/><rect x="6" y="6" width="3" height="3"/><rect x="10.5" y="6" width="3" height="3"/><rect x="15" y="6" width="3" height="3"/><rect x="6" y="10.5" width="3" height="3"/><rect x="10.5" y="10.5" width="3" height="3"/><rect x="15" y="10.5" width="3" height="3"/><rect x="6" y="15" width="3" height="3"/><rect x="10.5" y="15" width="3" height="3"/><rect x="15" y="15" width="3" height="3"/></svg>
<span class="tool-btn-label">Block</span>
<span class="tool-btn-kbd">B</span>
</button>
<button class="tool-btn" data-tool="table" title="Tisch (TAB)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="9" width="16" height="6" rx="1"/><line x1="6" y1="15" x2="6" y2="19"/><line x1="18" y1="15" x2="18" y2="19"/></svg>
<span class="tool-btn-label">Tisch</span>
<span class="tool-btn-kbd">TAB</span>
</button>
<button class="tool-btn" data-tool="stage" title="Bühne">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 17h20v3H2z"/><path d="M5 14V8h14v6"/><path d="M9 14v-3"/><path d="M15 14v-3"/></svg>
<span class="tool-btn-label">Bühne</span>
<span class="tool-btn-kbd">S</span>
</button>
</div>
</div>
<div class="leftbar-footer">
<button class="leftbar-footer-btn" title="Plugin hinzufügen" aria-label="Plugin hinzufügen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="16"/><line x1="8" y1="12" x2="16" y2="12"/></svg>
</button>
<button class="leftbar-footer-btn" title="Werkzeugkasten anpassen" aria-label="Werkzeugkasten anpassen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>
</button>
<button class="leftbar-footer-btn" title="Hilfe (F1)" aria-label="Hilfe">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
</button>
</div>
</aside>
<!-- CANVAS AREA -->
<section class="canvas-area" id="canvas-area" aria-label="CAD Zeichenfläche">
<!-- Coordinate display (top-left) -->
<div class="canvas-coords" role="status" aria-live="polite">
<span><span class="canvas-coords-label">X</span><span class="canvas-coords-val" id="coord-x">0.000</span></span>
<span><span class="canvas-coords-label">Y</span><span class="canvas-coords-val" id="coord-y">0.000</span></span>
<span style="color: var(--color-text-faint);">m</span>
</div>
<!-- View tabs (top-right) -->
<div class="canvas-view-tabs" role="tablist" aria-label="Ansicht umschalten">
<button class="canvas-view-tab active" data-view="2d">2D</button>
<button class="canvas-view-tab" data-view="iso">ISO</button>
<button class="canvas-view-tab" data-view="front">Front</button>
<button class="canvas-view-tab" data-view="top">Top</button>
</div>
<!-- Main SVG canvas -->
<svg class="canvas-svg" id="canvas-svg" viewBox="0 0 1200 700" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Festsaal Stuttgart Grundriss">
<defs>
<pattern id="grid-minor" width="20" height="20" patternUnits="userSpaceOnUse">
<path d="M 20 0 L 0 0 0 20" fill="none" stroke="rgba(255,255,255,0.05)" stroke-width="0.5"/>
</pattern>
<pattern id="grid-major" width="100" height="100" patternUnits="userSpaceOnUse">
<rect width="100" height="100" fill="url(#grid-minor)"/>
<path d="M 100 0 L 0 0 0 100" fill="none" stroke="rgba(255,255,255,0.12)" stroke-width="0.8"/>
</pattern>
<pattern id="hatch-stage" width="8" height="8" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
<line x1="0" y1="0" x2="0" y2="8" stroke="#f59e0b" stroke-width="1.5"/>
</pattern>
<pattern id="hatch-table" width="6" height="6" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
<line x1="0" y1="0" x2="0" y2="6" stroke="#94a3b8" stroke-width="0.8"/>
</pattern>
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" fill="#94a3b8"/>
</marker>
</defs>
<!-- Background grid -->
<rect width="1200" height="700" fill="#0f172a"/>
<rect width="1200" height="700" fill="url(#grid-major)"/>
<!-- Origin axes (subtle) -->
<line x1="0" y1="350" x2="1200" y2="350" stroke="rgba(96,165,250,0.18)" stroke-width="1" stroke-dasharray="2 4"/>
<line x1="600" y1="0" x2="600" y2="700" stroke="rgba(96,165,250,0.18)" stroke-width="1" stroke-dasharray="2 4"/>
<!-- Hall outline (35m x 20m, scale 14 px/m, origin top-left of hall) -->
<g id="hall">
<rect x="150" y="120" width="700" height="420" fill="#1e293b" stroke="#e2e8f0" stroke-width="2.5"/>
<text x="500" y="105" text-anchor="middle" fill="#e2e8f0" font-family="Inter, sans-serif" font-size="14" font-weight="600">Festsaal Stuttgart · 35 m × 20 m</text>
<!-- Stage (Bühne) - top -->
<g id="stage">
<rect x="350" y="120" width="300" height="60" fill="url(#hatch-stage)" stroke="#f59e0b" stroke-width="1.5"/>
<text x="500" y="155" text-anchor="middle" fill="#fbbf24" font-family="Inter, sans-serif" font-size="12" font-weight="600">BÜHNE</text>
<text x="500" y="172" text-anchor="middle" fill="#fbbf24" font-family="Inter, sans-serif" font-size="9" opacity="0.7">10 m × 3 m</text>
</g>
<!-- Entrance -->
<g id="entrance">
<rect x="450" y="538" width="100" height="6" fill="#10b981" stroke="#10b981" stroke-width="1"/>
<text x="500" y="555" text-anchor="middle" fill="#10b981" font-family="Inter, sans-serif" font-size="9" font-weight="500">EINGANG</text>
</g>
<!-- Row 1: 22 chairs (left-right), 0.6m spacing, 0.5m chair width -->
<g id="seating">
<!-- Row 1 -->
<g transform="translate(200, 220)">
<g id="row1">
<!-- 22 chairs -->
<rect x="0" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="16" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="32" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="48" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="64" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="80" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="96" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="112" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="128" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="144" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="160" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="176" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="192" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="208" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="224" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="240" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="256" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="272" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="288" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="304" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="320" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="336" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
</g>
</g>
<!-- Rows 2-5 (spacing 28) -->
<g transform="translate(200, 254)">
<rect x="0" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="16" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="32" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="48" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="64" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="80" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="96" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="112" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="128" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="144" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="160" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="176" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="192" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="208" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="224" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="240" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="256" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="272" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="288" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="304" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="320" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="336" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
</g>
<g transform="translate(200, 288)">
<rect x="0" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="16" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="32" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="48" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="64" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="80" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="96" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="112" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="128" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="144" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="160" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="176" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="192" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="208" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="224" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="240" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="256" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="272" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="288" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="304" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="320" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="336" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
</g>
<g transform="translate(200, 322)">
<rect x="0" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="16" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="32" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="48" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="64" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="80" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="96" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="112" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="128" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="144" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="160" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="176" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="192" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="208" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="224" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="240" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="256" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="272" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="288" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="304" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="320" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="336" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
</g>
<g transform="translate(200, 356)">
<rect x="0" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="16" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="32" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="48" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="64" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="80" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="96" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="112" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="128" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="144" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="160" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="176" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="192" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="208" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="224" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="240" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="256" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="272" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="288" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="304" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="320" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
<rect x="336" y="0" width="11" height="11" rx="2" fill="#3b82f6" stroke="#60a5fa" stroke-width="0.5"/>
</g>
</g>
<!-- Tables (Tafelrunde) right block -->
<g id="tables">
<g transform="translate(610, 220)">
<circle cx="0" cy="0" r="22" fill="url(#hatch-table)" stroke="#94a3b8" stroke-width="1.5"/>
<circle cx="0" cy="0" r="5" fill="#94a3b8"/>
<text x="0" y="-30" text-anchor="middle" fill="#cbd5e1" font-family="Inter, sans-serif" font-size="9">T1 · 8 Pers</text>
</g>
<g transform="translate(700, 220)">
<circle cx="0" cy="0" r="22" fill="url(#hatch-table)" stroke="#94a3b8" stroke-width="1.5"/>
<circle cx="0" cy="0" r="5" fill="#94a3b8"/>
<text x="0" y="-30" text-anchor="middle" fill="#cbd5e1" font-family="Inter, sans-serif" font-size="9">T2</text>
</g>
<g transform="translate(790, 220)">
<circle cx="0" cy="0" r="22" fill="url(#hatch-table)" stroke="#94a3b8" stroke-width="1.5"/>
<circle cx="0" cy="0" r="5" fill="#94a3b8"/>
<text x="0" y="-30" text-anchor="middle" fill="#cbd5e1" font-family="Inter, sans-serif" font-size="9">T3</text>
</g>
<g transform="translate(655, 310)">
<circle cx="0" cy="0" r="22" fill="url(#hatch-table)" stroke="#94a3b8" stroke-width="1.5"/>
<circle cx="0" cy="0" r="5" fill="#94a3b8"/>
<text x="0" y="-30" text-anchor="middle" fill="#cbd5e1" font-family="Inter, sans-serif" font-size="9">T4</text>
</g>
<g transform="translate(745, 310)">
<circle cx="0" cy="0" r="22" fill="url(#hatch-table)" stroke="#94a3b8" stroke-width="1.5"/>
<circle cx="0" cy="0" r="5" fill="#94a3b8"/>
<text x="0" y="-30" text-anchor="middle" fill="#cbd5e1" font-family="Inter, sans-serif" font-size="9">T5</text>
</g>
<g transform="translate(700, 400)">
<rect x="-30" y="-20" width="60" height="40" rx="4" fill="url(#hatch-table)" stroke="#94a3b8" stroke-width="1.5"/>
<text x="0" y="-26" text-anchor="middle" fill="#cbd5e1" font-family="Inter, sans-serif" font-size="9">T6 · Bankett</text>
</g>
</g>
<!-- Dimensions -->
<g id="dimensions" stroke="#94a3b8" fill="#cbd5e1" font-family="Inter, sans-serif" font-size="10">
<!-- Width dimension (top) -->
<line x1="150" y1="100" x2="850" y2="100" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
<text x="500" y="94" text-anchor="middle" font-weight="500">35.00 m</text>
<!-- Height dimension (left) -->
<line x1="130" y1="120" x2="130" y2="540" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
<text x="118" y="335" text-anchor="middle" font-weight="500" transform="rotate(-90, 118, 335)">20.00 m</text>
</g>
<!-- Selection example (highlighted chair) -->
<rect x="240" y="220" width="11" height="11" rx="2" fill="none" stroke="#10b981" stroke-width="2" stroke-dasharray="2 2">
<animate attributeName="stroke-dashoffset" from="0" to="4" dur="0.5s" repeatCount="indefinite"/>
</rect>
</g>
<!-- Compass rose -->
<g transform="translate(1100, 60)">
<circle r="22" fill="#1e293b" stroke="#475569" stroke-width="1"/>
<text y="-12" text-anchor="middle" fill="#ef4444" font-family="Inter, sans-serif" font-size="10" font-weight="700">N</text>
<text y="20" text-anchor="middle" fill="#94a3b8" font-family="Inter, sans-serif" font-size="10">S</text>
<text x="-14" y="3" text-anchor="middle" fill="#94a3b8" font-family="Inter, sans-serif" font-size="10">W</text>
<text x="14" y="3" text-anchor="middle" fill="#94a3b8" font-family="Inter, sans-serif" font-size="10">E</text>
<polygon points="0,-8 3,4 0,1 -3,4" fill="#ef4444"/>
</g>
</svg>
<!-- Floating canvas toolbar (zoom/pan/grid) -->
<div class="canvas-toolbar" role="toolbar" aria-label="Canvas-Werkzeuge">
<button class="canvas-toolbar-btn" id="btn-zoom-out" title="Herauszoomen (-)" aria-label="Herauszoomen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/><line x1="8" y1="11" x2="14" y2="11"/></svg>
</button>
<span class="canvas-zoom-display" id="zoom-display">100%</span>
<button class="canvas-toolbar-btn" id="btn-zoom-in" title="Hineinzoomen (+)" aria-label="Hineinzoomen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/><line x1="11" y1="8" x2="11" y2="14"/><line x1="8" y1="11" x2="14" y2="11"/></svg>
</button>
<button class="canvas-toolbar-btn" id="btn-zoom-fit" title="Zoom anpassen (F)" aria-label="Zoom anpassen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7V5a2 2 0 0 1 2-2h2"/><path d="M17 3h2a2 2 0 0 1 2 2v2"/><path d="M21 17v2a2 2 0 0 1-2 2h-2"/><path d="M7 21H5a2 2 0 0 1-2-2v-2"/><line x1="7" y1="12" x2="17" y2="12"/></svg>
</button>
<div class="canvas-toolbar-divider"></div>
<button class="canvas-toolbar-btn active" id="btn-grid" title="Grid ein/aus (F7)" aria-label="Grid umschalten" aria-pressed="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18"/><line x1="3" y1="9" x2="21" y2="9"/><line x1="3" y1="15" x2="21" y2="15"/><line x1="9" y1="3" x2="9" y2="21"/><line x1="15" y1="3" x2="15" y2="21"/></svg>
</button>
<button class="canvas-toolbar-btn" id="btn-ortho" title="Ortho-Modus (F8)" aria-label="Ortho-Modus umschalten" aria-pressed="false">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l18 18M3 21l18-18"/></svg>
</button>
<button class="canvas-toolbar-btn" id="btn-snap" title="Snap ein/aus (F3)" aria-label="Snap umschalten" aria-pressed="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v4M12 18v4M2 12h4M18 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8"/><circle cx="12" cy="12" r="3"/></svg>
</button>
<div class="canvas-toolbar-divider"></div>
<button class="canvas-toolbar-btn" title="Vorherige Ansicht" aria-label="Vorherige Ansicht">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"/></svg>
</button>
</div>
</section>
<!-- Right vertical tab bar (visible on mobile, hidden on desktop via CSS) -->
<nav class="right-tab-bar" aria-label="Schnellzugriff Panels" role="navigation">
<button class="right-tab-btn active" data-drawer="tool" aria-label="Werkzeug">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>
<span>Werkzg</span>
</button>
<button class="right-tab-btn" data-drawer="layer" aria-label="Layer">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/></svg>
<span>Layer</span>
</button>
<button class="right-tab-btn" data-drawer="library" aria-label="Bibliothek">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h7a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><line x1="3" y1="12" x2="21" y2="12"/></svg>
<span>Bibli</span>
</button>
<button class="right-tab-btn" data-drawer="ki" aria-label="KI Copilot">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>
<span>KI</span>
<span class="right-tab-btn-badge">2</span>
</button>
</nav>
<!-- RIGHT SIDEBAR -->
<aside class="rightbar" aria-label="Eigenschaften-Panels">
<div class="rightbar-tabs" role="tablist">
<button class="rightbar-tab active" data-panel="tool" role="tab" aria-selected="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>
<span>Werkzeug</span>
</button>
<button class="rightbar-tab" data-panel="layer" role="tab">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/></svg>
<span>Layer</span>
</button>
<button class="rightbar-tab" data-panel="library" role="tab">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h7a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><line x1="3" y1="12" x2="21" y2="12"/></svg>
<span>Bibliothek</span>
</button>
<button class="rightbar-tab" data-panel="ki" role="tab">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>
<span>KI</span>
<span class="rightbar-tab-badge">2</span>
</button>
</div>
<div class="rightbar-content">
<!-- TOOL PANEL -->
<div class="rightbar-panel active" data-panel-content="tool">
<div class="panel-section">
<div class="panel-section-title">
<span>Auswahl · 1 Stuhl</span>
<button style="color: var(--color-text-muted); font-size: 11px;" title="Mehr Optionen">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="1"/><circle cx="12" cy="5" r="1"/><circle cx="12" cy="19" r="1"/></svg>
</button>
</div>
</div>
<div class="panel-section">
<div class="panel-section-title"><span>Geometrie</span></div>
<div class="prop-row">
<span class="prop-label">Position X</span>
<input class="prop-input" type="text" value="2.143 m" aria-label="Position X">
</div>
<div class="prop-row">
<span class="prop-label">Position Y</span>
<input class="prop-input" type="text" value="7.500 m" aria-label="Position Y">
</div>
<div class="prop-row">
<span class="prop-label">Breite</span>
<input class="prop-input" type="text" value="0.50 m" aria-label="Breite">
</div>
<div class="prop-row">
<span class="prop-label">Tiefe</span>
<input class="prop-input" type="text" value="0.50 m" aria-label="Tiefe">
</div>
<div class="prop-row">
<span class="prop-label">Drehung</span>
<input class="prop-input" type="text" value="0.00°" aria-label="Drehung">
</div>
</div>
<div class="panel-section">
<div class="panel-section-title"><span>Darstellung</span></div>
<div class="prop-row">
<span class="prop-label">Farbe</span>
<div class="prop-color-row">
<div class="prop-color-swatch" style="background: #3b82f6;" aria-hidden="true"></div>
<input class="prop-swatch-input" type="color" value="#3b82f6" aria-label="Stuhlfarbe">
<input class="prop-input" type="text" value="#3B82F6" aria-label="Farb-Hex">
</div>
</div>
<div class="prop-row">
<span class="prop-label">Linientyp</span>
<select class="prop-select" aria-label="Linientyp">
<option>Solid (durchgehend)</option>
<option>Dashed (gestrichelt)</option>
<option>Dotted (gepunktet)</option>
<option>Dash-Dot</option>
</select>
</div>
<div class="prop-row">
<span class="prop-label">Stärke</span>
<select class="prop-select" aria-label="Linienstärke">
<option>0.18 mm · Normal</option>
<option>0.25 mm · Dick</option>
<option>0.35 mm · Extra</option>
<option>0.50 mm · Max</option>
</select>
</div>
<div class="prop-row">
<span class="prop-label">Layer</span>
<select class="prop-select" aria-label="Layer zuweisen">
<option>Bestuhlung · Standard</option>
<option>Bestuhlung · VIP</option>
<option>Möbel · Tische</option>
<option>Bühne</option>
</select>
</div>
</div>
<div class="panel-section">
<div class="panel-section-title"><span>Block</span></div>
<div class="prop-row">
<span class="prop-label">Block-Name</span>
<input class="prop-input" type="text" value="Stuhl-Standard" aria-label="Block-Name">
</div>
<div class="prop-row">
<span class="prop-label">Beschreibung</span>
<input class="prop-input" type="text" value="Standard-Konferenzstuhl 0.5×0.5m" aria-label="Beschreibung">
</div>
</div>
</div>
<!-- LAYER PANEL -->
<div class="rightbar-panel" data-panel-content="layer">
<div class="panel-section">
<div class="panel-section-title">
<span>Ebenen-Struktur</span>
<button style="color: var(--color-text-muted);" title="Optionen" aria-label="Layer-Optionen">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>
</button>
</div>
<div class="tree tree-layer" role="tree" aria-label="Layer-Struktur">
<div class="tree-node" role="treeitem" aria-expanded="true">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Einklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7l9-4 9 4-9 4-9-4z"/><path d="M3 12l9 4 9-4"/><path d="M3 17l9 4 9-4"/></svg></span>
<span class="tree-name">Bestuhlung</span>
<span class="tree-count">110</span>
</div>
<div class="tree-children" role="group">
<div class="tree-node" role="treeitem" aria-expanded="true">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Einklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span>
<span class="tree-name">Reihe 1</span>
<span class="tree-count">30</span>
</div>
<div class="tree-children" role="group">
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf active" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span><span class="tree-name">Stuhl 1.1</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span><span class="tree-name">Stuhl 1.2</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span><span class="tree-name">Stuhl 1.30</span></div></div>
</div>
</div>
<div class="tree-node" role="treeitem" aria-expanded="false">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Aufklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 6 15 12 9 18"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span>
<span class="tree-name">Reihe 2</span>
<span class="tree-count">30</span>
</div>
<div class="tree-children" role="group" hidden>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span><span class="tree-name">Stuhl 1.1</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span><span class="tree-name">Stuhl 1.30</span></div></div>
</div>
</div>
<div class="tree-node" role="treeitem" aria-expanded="false">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Aufklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 6 15 12 9 18"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span>
<span class="tree-name">Reihe 3</span>
<span class="tree-count">30</span>
</div>
<div class="tree-children" role="group" hidden>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span><span class="tree-name">Stuhl 1.1</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span><span class="tree-name">Stuhl 1.30</span></div></div>
</div>
</div>
<div class="tree-node" role="treeitem" aria-expanded="false">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Aufklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 6 15 12 9 18"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5"><rect x="3" y="9" width="18" height="6" rx="1"/><line x1="6" y1="15" x2="6" y2="19"/><line x1="18" y1="15" x2="18" y2="19"/></svg></span>
<span class="tree-name">Tische</span>
<span class="tree-count">6</span>
</div>
<div class="tree-children" role="group" hidden>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5"><rect x="3" y="9" width="18" height="6" rx="1"/><line x1="6" y1="15" x2="6" y2="19"/><line x1="18" y1="15" x2="18" y2="19"/></svg></span><span class="tree-name">Bankett-Tisch 1.8×0.8</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5"><circle cx="12" cy="12" r="8"/><line x1="6" y1="20" x2="8" y2="14"/><line x1="18" y1="20" x2="16" y2="14"/></svg></span><span class="tree-name">Runde-Tisch 1.5m Ø</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5"><rect x="3" y="9" width="18" height="6" rx="1"/><line x1="6" y1="15" x2="6" y2="19"/><line x1="18" y1="15" x2="18" y2="19"/></svg></span><span class="tree-name">Tisch-Rund 8 Pers</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5"><rect x="3" y="9" width="18" height="6" rx="1"/><line x1="6" y1="15" x2="6" y2="19"/><line x1="18" y1="15" x2="18" y2="19"/></svg></span><span class="tree-name">Bankett-Tisch 2.4m</span><span class="lib-drag-hint"></span></div></div>
</div>
</div>
</div>
</div>
<div class="tree-node" role="treeitem" aria-expanded="false">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Aufklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 6 15 12 9 18"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#f59e0b" stroke-width="1.5"><path d="M2 17h20v3H2z"/><path d="M5 14V8h14v6"/></svg></span>
<span class="tree-name">Bühne</span>
<span class="tree-count">1</span>
</div>
<div class="tree-children" role="group" hidden>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#f59e0b" stroke-width="1.5"><path d="M2 17h20v3H2z"/><path d="M5 14V8h14v6"/></svg></span><span class="tree-name">Hauptbühne 10m × 3m</span></div></div>
</div>
</div>
<div class="tree-node" role="treeitem" aria-expanded="false">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Aufklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 6 15 12 9 18"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#64748b" stroke-width="1.5"><rect x="3" y="3" width="18" height="18"/></svg></span>
<span class="tree-name">Wände</span>
<span class="tree-count">4</span>
</div>
<div class="tree-children" role="group" hidden>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#64748b" stroke-width="1.5"><rect x="3" y="3" width="18" height="18"/></svg></span><span class="tree-name">Außenwand Nord 35m</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#64748b" stroke-width="1.5"><rect x="3" y="3" width="18" height="18"/></svg></span><span class="tree-name">Außenwand Süd 35m</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#64748b" stroke-width="1.5"><rect x="3" y="3" width="18" height="18"/></svg></span><span class="tree-name">Außenwand West 20m</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#64748b" stroke-width="1.5"><rect x="3" y="3" width="18" height="18"/></svg></span><span class="tree-name">Außenwand Ost 20m</span></div></div>
</div>
</div>
<div class="tree-node" role="treeitem" aria-expanded="false">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Aufklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 6 15 12 9 18"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="1.5"><path d="M4 7V4h16v3M9 20h6M12 4v16"/></svg></span>
<span class="tree-name">Beschriftung</span>
<span class="tree-count">5</span>
</div>
<div class="tree-children" role="group" hidden>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="1.5"><path d="M4 7V4h16v3M9 20h6M12 4v16"/></svg></span><span class="tree-name">EINGANG</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="1.5"><path d="M4 7V4h16v3M9 20h6M12 4v16"/></svg></span><span class="tree-name">BÜHNE</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="1.5"><path d="M4 7V4h16v3M9 20h6M12 4v16"/></svg></span><span class="tree-name">T1 Tisch 1, 8 Pers</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="1.5"><path d="M4 7V4h16v3M9 20h6M12 4v16"/></svg></span><span class="tree-name">35.00 m</span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="1.5"><path d="M4 7V4h16v3M9 20h6M12 4v16"/></svg></span><span class="tree-name">20.00 m</span></div></div>
</div>
</div>
</div>
<button class="add-layer-btn">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
Ebene hinzufügen
</button>
</div>
</div>
<div class="rightbar-panel" data-panel-content="library">
<div class="lib-search">
<span class="lib-search-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
</span>
<input type="text" placeholder="Block suchen..." aria-label="Bibliothek durchsuchen">
</div>
<div class="lib-categories">
<button class="lib-cat active">Alle</button>
<button class="lib-cat">Bestuhlung</button>
<button class="lib-cat">Tische</button>
<button class="lib-cat">Bühne</button>
<button class="lib-cat">Deko</button>
</div>
<div class="tree tree-library" role="tree" aria-label="Bibliothek-Struktur">
<div class="tree-node" role="treeitem" aria-expanded="true">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Einklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><path d="M3 7l9-4 9 4-9 4-9-4z"/><path d="M3 12l9 4 9-4"/><path d="M3 17l9 4 9-4"/></svg></span>
<span class="tree-name">Bestuhlung</span>
<span class="tree-count">8</span>
</div>
<div class="tree-children" role="group">
<div class="tree-node" role="treeitem" aria-expanded="true">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Einklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span>
<span class="tree-name">Stühle</span>
<span class="tree-count">4</span>
</div>
<div class="tree-children" role="group">
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span><span class="tree-name">Stuhl-Standard 0.5×0.5</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#f59e0b" stroke-width="1.5"><path d="M7 4h10v8a3 3 0 0 1-3 3h-4a3 3 0 0 1-3-3z"/><line x1="6" y1="15" x2="6" y2="20"/><line x1="18" y1="15" x2="18" y2="20"/><path d="M9 7l3-3 3 3"/></svg></span><span class="tree-name">Stuhl-Konferenz 0.6×0.6</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span><span class="tree-name">Stuhl-Klappbar 0.45×0.5</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#8b5cf6" stroke-width="1.5"><rect x="8" y="4" width="8" height="10" rx="1"/><line x1="7" y1="14" x2="7" y2="20"/><line x1="17" y1="14" x2="17" y2="20"/></svg></span><span class="tree-name">Stuhl-VIP Polster</span><span class="lib-drag-hint"></span></div></div>
</div>
</div>
<div class="tree-node" role="treeitem" aria-expanded="false">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Aufklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 6 15 12 9 18"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5"><rect x="3" y="9" width="18" height="6" rx="1"/><line x1="6" y1="15" x2="6" y2="19"/><line x1="18" y1="15" x2="18" y2="19"/></svg></span>
<span class="tree-name">Tische</span>
<span class="tree-count">4</span>
</div>
<div class="tree-children" role="group" hidden>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5"><rect x="3" y="9" width="18" height="6" rx="1"/><line x1="6" y1="15" x2="6" y2="19"/><line x1="18" y1="15" x2="18" y2="19"/></svg></span><span class="tree-name">Bankett-Tisch 1.8×0.8</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5"><circle cx="12" cy="12" r="8"/><line x1="6" y1="20" x2="8" y2="14"/><line x1="18" y1="20" x2="16" y2="14"/></svg></span><span class="tree-name">Runde-Tisch 1.5m Ø</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5"><rect x="3" y="9" width="18" height="6" rx="1"/><line x1="6" y1="15" x2="6" y2="19"/><line x1="18" y1="15" x2="18" y2="19"/></svg></span><span class="tree-name">Tisch-Rund 8 Pers</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="1.5"><rect x="3" y="9" width="18" height="6" rx="1"/><line x1="6" y1="15" x2="6" y2="19"/><line x1="18" y1="15" x2="18" y2="19"/></svg></span><span class="tree-name">Bankett-Tisch 2.4m</span><span class="lib-drag-hint"></span></div></div>
</div>
</div>
</div>
</div>
<div class="tree-node" role="treeitem" aria-expanded="false">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Aufklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 6 15 12 9 18"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#f59e0b" stroke-width="1.5"><path d="M2 17h20v3H2z"/><path d="M5 14V8h14v6"/></svg></span>
<span class="tree-name">Bühne</span>
<span class="tree-count">3</span>
</div>
<div class="tree-children" role="group" hidden>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#f59e0b" stroke-width="1.5"><path d="M2 17h20v3H2z"/><path d="M5 14V8h14v6"/></svg></span><span class="tree-name">Hauptbühne 10m × 3m</span></div></div>
</div>
</div>
<div class="tree-node" role="treeitem" aria-expanded="false">
<div class="tree-row tree-row-folder" data-tree-toggle>
<button class="tree-toggle" aria-label="Aufklappen"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 6 15 12 9 18"/></svg></button>
<span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="1.5"><path d="M12 2l3 6 6 1-4.5 4 1 6L12 16l-5.5 3 1-6L3 9l6-1z"/></svg></span>
<span class="tree-name">Dekoration</span>
<span class="tree-count">5</span>
</div>
<div class="tree-children" role="group" hidden>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="1.5"><path d="M12 2l3 6 6 1-4.5 4 1 6L12 16l-5.5 3 1-6L3 9l6-1z"/></svg></span><span class="tree-name">Stern groß</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="1.5"><circle cx="12" cy="12" r="4"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3"/></svg></span><span class="tree-name">Pflanze groß</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="1.5"><path d="M3 12h13M16 12l-4-4M16 12l-4 4"/><path d="M21 4v16"/></svg></span><span class="tree-name">Notausgang</span><span class="lib-drag-hint"></span></div></div>
<div class="tree-node" role="treeitem"><div class="tree-row tree-row-leaf lib-draggable" draggable="true" data-tree-select><span class="tree-toggle tree-toggle-leaf" aria-hidden="true"></span><span class="tree-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="1.5"><circle cx="12" cy="12" r="4"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3"/></svg></span><span class="tree-name">Pflanze klein</span><span class="lib-drag-hint"></span></div></div>
</div>
</div>
</div>
</div>
<div class="rightbar-panel" data-panel-content="ki">
<div class="ki-header">
<div class="ki-avatar">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>
</div>
<div>
<div class="ki-title">KI Copilot</div>
<div style="font-size: 11px; color: var(--color-text-muted);">Powered by GPT-4o</div>
</div>
<span class="ki-status">Online</span>
</div>
<div class="ki-suggestions">
<div class="ki-suggestion-title">Schnell-Aktionen</div>
<button class="ki-chip">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg>
5 Reihen à 22 Stühle anlegen
</button>
<button class="ki-chip">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>
Optimale Bestuhlung vorschlagen
</button>
<button class="ki-chip">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/></svg>
Überlappende Stühle finden
</button>
</div>
<div class="ki-chat">
<div class="ki-msg user">
<div class="ki-msg-bubble">Lege 5 Reihen mit je 22 Stühlen parallel zur Bühne an, Abstand 1m.</div>
</div>
<div class="ki-msg assistant">
<div class="ki-msg-bubble">
Ich erstelle <strong>110 Stühle</strong> in 5 Reihen (Y=2,5m/3,5m/4,5m/5,5m/6,5m; X-Start=2,5m; 22 Stühle × 0,5m + 0,1m Abstand). Los geht's! <em style="color: var(--color-ki);">● function_call: placeSeating(rows=5, cols=22, gap=1.0)</em>
</div>
</div>
</div>
<div class="ki-input-wrap">
<input class="ki-input" type="text" placeholder="Frage den KI Copilot..." aria-label="KI Eingabe">
<button class="ki-voice-btn" title="Spracheingabe" aria-label="Spracheingabe starten">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" y1="19" x2="12" y2="23"/><line x1="8" y1="23" x2="16" y2="23"/></svg>
</button>
<button class="ki-send-btn" title="Senden" aria-label="Senden">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>
</button>
</div>
</div>
</div>
</aside>
</main>
<!-- ==================== DRAWERS (mobile slide-in panels) ==================== -->
<div class="scrim" id="scrim" aria-hidden="true"></div>
<!-- LEFT DRAWER: Werkzeugpalette -->
<aside class="drawer drawer-left" id="drawer-left" aria-label="Werkzeugpalette" aria-hidden="true">
<div class="drawer-header">
<span class="drawer-title">Werkzeuge</span>
<button class="drawer-close" data-close-drawer aria-label="Schließen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
</button>
</div>
<div class="drawer-body" id="drawer-left-body"><!-- filled by JS --></div>
</aside>
<!-- RIGHT DRAWER: Panel content -->
<aside class="drawer drawer-right" id="drawer-right" aria-label="Panel" aria-hidden="true">
<div class="drawer-header">
<span class="drawer-title" id="drawer-right-title">Werkzeug</span>
<button class="drawer-close" data-close-drawer aria-label="Schließen">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
</button>
</div>
<div class="drawer-tabs" id="drawer-right-tabs" role="tablist">
<button class="drawer-tab active" data-drawer-tab="tool" role="tab">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>
<span>Wz</span>
</button>
<button class="drawer-tab" data-drawer-tab="layer" role="tab">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/></svg>
<span>Layer</span>
</button>
<button class="drawer-tab" data-drawer-tab="library" role="tab">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h7a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg>
<span>Lib</span>
</button>
<button class="drawer-tab" data-drawer-tab="ki" role="tab">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/></svg>
<span>KI</span>
</button>
</div>
<div class="drawer-body" id="drawer-right-body"><!-- filled by JS --></div>
</aside>
<!-- ==================== COMMAND LINE ==================== -->
<section class="cmdline" aria-label="Befehlszeile">
<div class="cmdline-history" id="cmdline-history" aria-live="polite">
<div class="cmdline-history-entry info"><span class="prefix">·</span><span class="text">Bereit · Werkzeug: Auswahl · 110 Objekte · 5 Ebenen</span></div>
<div class="cmdline-history-entry info"><span class="prefix">·</span><span class="text">Auto-Save aktiv · letzte Speicherung vor 3 Sekunden</span></div>
<div class="cmdline-history-entry"><span class="prefix"></span><span class="text">hallo</span></div>
<div class="cmdline-history-entry info"><span class="prefix">·</span><span class="text">Hallo! Ich bin der KI Copilot. Tippe <strong>KI</strong> oder drücke Strg+K für Hilfe.</span></div>
<div class="cmdline-history-entry"><span class="prefix"></span><span class="text">BESTUHLUNG 5,22</span></div>
<div class="cmdline-history-entry info"><span class="prefix">·</span><span class="text">110 Stühle angelegt auf Ebene "Bestuhlung" ✓</span></div>
</div>
<div class="cmdline-input-wrap">
<span class="cmdline-prompt"></span>
<input class="cmdline-input" type="text" id="cmdline-input" placeholder='Befehl eingeben (z. B. LINIE, KREIS, BESTUHLUNG)...' aria-label="CAD Befehlseingabe" autocomplete="off">
</div>
</section>
<!-- ==================== STATUS BAR ==================== -->
<footer class="statusbar" role="status">
<div class="status-item active" title="Snap-Modus (F3)" aria-pressed="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>
<span>SNAP</span>
</div>
<div class="status-item" title="Ortho-Modus (F8)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l18 18M3 21l18-18"/></svg>
<span>ORTHO</span>
</div>
<div class="status-item hide-mobile" title="Polar-Tracking">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="16 12 12 8 8 12"/><line x1="12" y1="2" x2="12" y2="16"/></svg>
<span>POLAR</span>
</div>
<div class="status-item active" title="Grid anzeigen (F7)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18"/><line x1="3" y1="9" x2="21" y2="9"/><line x1="9" y1="3" x2="9" y2="21"/></svg>
<span>GRID</span>
</div>
<div class="status-item" style="font-family: var(--font-mono);">
<span>X: 0.000 m</span>
</div>
<div class="status-item" style="font-family: var(--font-mono);">
<span>Y: 0.000 m</span>
</div>
<div class="status-item hide-mobile" title="Layer">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"/></svg>
<span>Bestuhlung</span>
</div>
<div class="status-item hide-mobile" title="Werkzeug">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>
<span>Auswahl</span>
</div>
<div class="status-item" title="1 anderer Nutzer online">
<span class="status-dot"></span>
<span>Online · 1 weiterer</span>
</div>
</footer>
</div>
<script src="assets/interactions.js"></script>
</body>
</html>