:root{color-scheme:dark;--bg:#0b0d12;--surface:#12151d;--surface-2:#161a24;--border:#262b3a;--text:#e8eaf1;--text-dim:#a9afc2;--text-faint:#565d72;--accent:#8f86ff}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:Instrument Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}.semantic-map-shell{display:flex;flex-direction:column;height:100vh}.semantic-map-header{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--border)}.semantic-map-header h1{font-size:15px;font-weight:600;letter-spacing:.02em}.semantic-map-header h1 span{color:var(--text-faint);font-weight:400}.semantic-map-stage{position:relative;flex:1;min-height:0}.semantic-map-canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}.semantic-map-hud{position:absolute;left:12px;bottom:12px;padding:6px 10px;border-radius:6px;background:rgba(18,21,29,.85);border:1px solid var(--border);color:var(--text-faint);font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,monospace;font-size:11px;line-height:1.4;white-space:pre;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.semantic-map-toolbar{position:absolute;left:12px;top:12px;display:flex;gap:8px}.semantic-map-toolbar button{background:rgba(18,21,29,.85);border:1px solid var(--border);border-radius:8px;color:var(--text-dim);font:500 12px Instrument Sans,system-ui,sans-serif;padding:6px 12px;cursor:pointer}.semantic-map-toolbar button:hover{color:var(--text);border-color:var(--accent)}.semantic-map-toolbar button.active{color:var(--accent);border-color:var(--accent)}.semantic-map-controls{position:absolute;left:12px;top:12px;right:324px;max-width:640px;display:flex;flex-direction:column;gap:8px}.semantic-map-controls .control-row{display:flex;gap:8px;align-items:center}.semantic-map-controls .search{flex:1;min-width:0;background:rgba(18,21,29,.9);border:1px solid var(--border);border-radius:8px;color:var(--text);font:400 13px Instrument Sans,system-ui,sans-serif;padding:7px 12px;outline:none}.semantic-map-controls .search:focus{border-color:var(--accent)}.semantic-map-controls .control-row button{background:rgba(18,21,29,.9);border:1px solid var(--border);border-radius:8px;color:var(--text-dim);font:500 12px Instrument Sans,system-ui,sans-serif;padding:7px 12px;cursor:pointer;white-space:nowrap}.semantic-map-controls .control-row button:hover{color:var(--text);border-color:var(--accent)}.semantic-map-controls .control-row button.active{color:var(--accent);border-color:var(--accent)}.semantic-map-controls .chips,.semantic-map-controls .filter-group{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.semantic-map-controls .filters{display:flex;gap:16px;flex-wrap:wrap}.semantic-map-controls .flabel{font:500 11px IBM Plex Mono,ui-monospace,monospace;color:var(--text-faint);margin-right:2px}.semantic-map-controls .chip{background:rgba(18,21,29,.9);border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font:500 11px IBM Plex Mono,ui-monospace,monospace;padding:3px 10px;cursor:pointer}.semantic-map-controls .chip:hover{border-color:var(--accent);color:var(--text)}.semantic-map-controls .chip.on{border-color:var(--accent);background:rgba(143,134,255,.14)}.semantic-map-minimap{bottom:12px;width:180px;height:138px;background:rgba(11,13,18,.85);cursor:pointer}.semantic-map-legend,.semantic-map-minimap{position:absolute;right:12px;border:1px solid var(--border);border-radius:8px}.semantic-map-legend{bottom:162px;min-width:180px;background:rgba(18,21,29,.9);padding:8px 10px;display:flex;flex-direction:column;gap:4px}.semantic-map-legend .lg-title{font:500 11px IBM Plex Mono,ui-monospace,monospace;color:var(--text-faint);margin-bottom:2px}.semantic-map-legend .lg-row{display:flex;gap:6px;align-items:center;font:500 12px Instrument Sans,system-ui,sans-serif}.semantic-map-legend .lg-biome{color:var(--text-faint)}.semantic-map-banner{left:50%;top:16px;transform:translateX(-50%);border:1px solid var(--accent);border-radius:8px;padding:6px 14px;font-size:12px;color:var(--text-dim);pointer-events:none}.semantic-map-banner,.semantic-map-panel{position:absolute;background:var(--surface-2)}.semantic-map-panel{right:12px;top:12px;width:300px;max-height:calc(100% - 24px);overflow-y:auto;border:1px solid var(--border);border-radius:12px;padding:14px 16px}.semantic-map-panel .close{position:absolute;top:8px;right:10px;border:none;background:none;padding:4px;font-size:14px;color:var(--text-faint);cursor:pointer}.semantic-map-panel .panel-title{width:100%;background:none;border:none;color:var(--text);font:600 14px Instrument Sans,system-ui,sans-serif;padding:0 0 4px;outline:none}.semantic-map-panel .panel-title:focus{border-bottom:1px solid var(--accent)}.semantic-map-panel .cluster{font:500 11px IBM Plex Mono,ui-monospace,monospace;margin-bottom:10px}.semantic-map-panel label{display:block;font:500 11px IBM Plex Mono,ui-monospace,monospace;color:var(--text-faint);margin:10px 0 4px}.semantic-map-panel input[type=text],.semantic-map-panel select,.semantic-map-panel textarea{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font:400 13px Instrument Sans,system-ui,sans-serif;padding:6px 8px;outline:none;resize:vertical}.semantic-map-panel input[type=text]:focus,.semantic-map-panel select:focus,.semantic-map-panel textarea:focus{border-color:var(--accent)}.semantic-map-panel textarea{min-height:56px}.semantic-map-panel .pin-state{font-size:12px;margin-top:6px;color:var(--text-dim)}.semantic-map-panel .meta{font:400 11px IBM Plex Mono,ui-monospace,monospace;color:var(--text-faint);margin-top:8px}.semantic-map-panel .row{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.semantic-map-panel .row button{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text-dim);font:500 12px Instrument Sans,system-ui,sans-serif;padding:7px 10px;cursor:pointer}.semantic-map-panel .row button:hover{color:var(--text);border-color:var(--accent)}.semantic-map-panel .row button.danger:hover{color:#f4b264;border-color:#f4b264}