:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#e6edf4;background-color:#0f172a;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400;line-height:1.5}*,:before,:after{box-sizing:border-box}html,body,#root{width:100%;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}.login-shell{background:#0f172a;place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-card{background:#111827;border:1px solid #1f2937;border-radius:.75rem;width:100%;max-width:400px;padding:2rem}.login-logo{width:100%;max-width:220px;height:auto;margin:0 auto 1.25rem;display:block}.panel-logo{width:100%;max-width:180px;height:auto;margin:0 0 .65rem;display:block}.login-card h1{color:#f8fafc;margin:.25rem 0 .5rem;font-size:1.5rem}.login-hint{margin:0 0 1.25rem}.login-error{color:#fecaca;background:#ef444426;border:1px solid #ef444466;border-radius:.5rem;margin:0 0 1rem;padding:.65rem .75rem;font-size:.9rem}.login-success{color:#bbf7d0;background:#22c55e1f;border:1px solid #22c55e59;border-radius:.5rem;margin:0 0 1rem;padding:.65rem .75rem;font-size:.9rem}.login-mode-toggle{text-align:center;color:#94a3b8;margin:1.25rem 0 0;font-size:.9rem}.login-mode-toggle button{color:#60a5fa;cursor:pointer;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.login-mode-toggle button:hover:not(:disabled){color:#93c5fd}.login-mode-toggle button:disabled{opacity:.6;cursor:not-allowed}.login-form{gap:.5rem;display:grid}.login-form label{color:#94a3b8;font-size:.85rem}.login-form input{color:#f8fafc;background:#0f172a;border:1px solid #334155;border-radius:.5rem;padding:.55rem .65rem;font-size:1rem}.login-form input:focus{border-color:#3b82f6;outline:none}.login-submit{width:100%;margin-top:.75rem}.logout-button{color:#cbd5e1;cursor:pointer;background:0 0;border:1px solid #475569;border-radius:.5rem;padding:.55rem .9rem}.logout-button:hover{color:#f8fafc;border-color:#94a3b8}.editor-shell{grid-template-columns:minmax(0,276px) 1fr;height:100dvh;max-height:100dvh;display:grid;overflow:hidden}.panel{background:#111827;border-right:1px solid #1f2937;min-width:0;padding:1.15rem 1rem;overflow:hidden auto}.panel-header-row{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.panel-close-button{color:#cbd5e1;cursor:pointer;background:#0f172a;border:1px solid #334155;border-radius:.5rem;flex-shrink:0;width:2.25rem;height:2.25rem;font-size:1rem;line-height:1}.panel-close-button:hover{color:#f8fafc;border-color:#64748b}.panel-header h1{color:#f8fafc;margin:.2rem 0 .5rem;font-size:1.25rem;font-weight:600;line-height:1.3}.eyebrow{text-transform:uppercase;letter-spacing:.07em;color:#94a3b8;margin:0;font-size:.7rem}.subtle{color:#94a3b8;margin:0;font-size:.82rem;line-height:1.4}.panel-section{border-top:1px solid #1f2937;margin-top:1.1rem;padding-top:.85rem}.section-title{text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;margin:0 0 .6rem;font-size:.76rem}.meta-row{color:#cbd5e1;justify-content:space-between;gap:.5rem;margin:.35rem 0;font-size:.82rem;display:flex}.meta-row strong{text-align:right;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.82rem;font-weight:600;overflow:hidden}.meta-row code{color:#f8fafc}.panel select{color:#f8fafc;background:#0f172a;border:1px solid #334155;border-radius:.5rem;width:100%;margin-top:.45rem;padding:.5rem .55rem;font-size:.82rem}.panel label.subtle{margin-top:.45rem;font-size:.76rem;display:block}.map-search-input{color:#f8fafc;background:#0f172a;border:1px solid #334155;border-radius:.5rem;width:100%;margin:.4rem 0 .55rem;padding:.5rem .55rem;font-size:.82rem}.map-search-input:focus{border-color:#3b82f6;outline:none}.node-search-empty{margin:.45rem 0 0;font-size:.76rem}.node-list{gap:.4rem;max-height:min(42vh,320px);margin:.5rem 0 0;padding:0;list-style:none;display:grid;overflow-y:auto}.node-list button{color:#e2e8f0;cursor:pointer;text-align:left;background:#0f172a;border:1px solid #334155;border-radius:.45rem;justify-content:space-between;align-items:center;gap:.45rem;width:100%;padding:.45rem .55rem;font-size:.82rem;display:flex}.node-list button span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.node-list button.active{background:#1e3a8a;border-color:#3b82f6}.workspace{background:#0f172a;flex-direction:column;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.workspace-header{z-index:30;background:#0f172a;border-bottom:1px solid #1f2937;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem 1.25rem;display:flex;position:sticky;top:0}.workspace-header-start{flex-direction:column;flex:1;align-items:flex-start;gap:.5rem;min-width:0;display:flex}.workspace-header-title-row{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.workspace-header-toolbar{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.floor-plan-import-button{white-space:nowrap;cursor:pointer;position:relative}.graph-tools-trigger--disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.floor-plan-file-input{opacity:0;cursor:pointer;width:100%;height:100%;font-size:0;position:absolute;inset:0}.floor-plan-file-input:disabled{cursor:not-allowed;pointer-events:none}.workspace-floor-plan-status{color:#38bdf8;margin:0;font-size:.78rem}.workspace-header-actions{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:.45rem;display:flex}.workspace-header-actions-primary{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.workspace-header-title-block{min-width:0}.workspace-header-map-name{color:#94a3b8;text-overflow:ellipsis;white-space:nowrap;margin:.15rem 0 0;font-size:.76rem;overflow:hidden}.workspace-header h2{color:#f8fafc;margin:0;font-size:1.25rem;font-weight:600;line-height:1.3}.header-actions-menu,.graph-tools-menu{position:relative}.graph-tools-trigger{color:#e2e8f0;cursor:pointer;background:#1e293b;border:1px solid #475569;border-radius:.5rem;align-items:center;gap:.35rem;padding:.45rem .7rem;font-size:.82rem;display:inline-flex}.graph-tools-trigger:hover:not(:disabled){background:#334155;border-color:#64748b}.graph-tools-trigger:disabled{opacity:.45;cursor:not-allowed}.graph-tools-trigger--active{border-color:#38bdf8;box-shadow:0 0 0 1px #38bdf859}.graph-tools-trigger--primary{color:#f8fafc;background:#2563eb;border-color:#1d4ed8}.graph-tools-trigger--primary:hover:not(:disabled){background:#1d4ed8;border-color:#1e40af}.graph-tools-trigger-caret{color:#94a3b8;font-size:1.2rem;line-height:1}.graph-tools-icon-button{justify-content:center;width:2.35rem;min-width:2.35rem;padding:.45rem 0;font-size:1rem;line-height:1}.graph-tools-dropdown{z-index:20;background:#111827;border:1px solid #334155;border-radius:.5rem;min-width:11rem;padding:.35rem;position:absolute;top:calc(100% + .35rem);left:0;box-shadow:0 12px 28px #00000073}.create-map-menu{position:relative}.create-map-popover{z-index:25;background:#111827;border:1px solid #334155;border-radius:.5rem;gap:.35rem;width:14.5rem;padding:.65rem;display:grid;position:absolute;top:calc(100% + .35rem);right:0;box-shadow:0 12px 28px #00000073}.create-map-popover-input{width:100%;margin:.15rem 0 0}.create-map-popover-submit{justify-content:center;width:100%;margin-top:.35rem}.graph-tools-item{color:#e2e8f0;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.4rem;width:100%;padding:.45rem .55rem;font-size:.8rem;display:block}.graph-tools-item:hover:not(:disabled){background:#1e293b}.graph-tools-item:disabled{opacity:.4;cursor:not-allowed}.graph-tools-item--active{color:#f8fafc;background:#1e3a8a}.workspace-floor-plan-bar{background:#0f172ad9;border:1px solid #334155;border-radius:.5rem;flex-wrap:wrap;align-items:center;gap:.75rem;max-width:min(100%,640px);padding:.4rem .55rem;display:flex}.workspace-floor-plan-name{color:#cbd5e1;text-overflow:ellipsis;white-space:nowrap;max-width:14rem;font-size:.78rem;overflow:hidden}.workspace-floor-plan-unsaved-hint{color:#fbbf24;margin:0;font-size:.72rem}.workspace-floor-plan-opacity{color:#94a3b8;align-items:center;gap:.4rem;font-size:.75rem;display:flex}.workspace-floor-plan-opacity input[type=range]{accent-color:#38bdf8;width:6.5rem}.workspace-floor-plan-remove{padding:.35rem .55rem;font-size:.75rem}.workspace-edit-panel{max-width:min(100%,520px)}.workspace-edit-hint{max-width:36rem;margin:0;font-size:.78rem}.workspace-header p{color:#94a3b8;margin:.2rem 0 0}.workspace-unsaved-hint{color:#f8fafc;white-space:nowrap;font-size:.78rem}.save-button{color:#f8fafc;cursor:pointer;background:#2563eb;border:none;border-radius:.5rem;padding:.55rem .9rem}.workspace>.canvas{flex:1;min-height:0}.canvas{background-color:#0f172a;background-image:radial-gradient(circle at 1px 1px,#334155 1px,#0000 0);background-size:24px 24px;min-height:440px;position:relative;overflow:hidden}.floor-plan-layer{z-index:0;pointer-events:none;object-fit:fill;-webkit-user-select:none;user-select:none;position:absolute}.canvas.add-node-mode{cursor:crosshair}.canvas.remove-node-mode{box-shadow:inset 0 0 0 2px #f8717159}.canvas.map-pan-enabled{cursor:grab}.canvas.map-pan-enabled .map-node{cursor:pointer}.canvas.map-panning{cursor:grabbing}.canvas.map-panning .map-node{cursor:pointer}.canvas.node-dragging{cursor:default}.canvas.node-dragging .map-node{cursor:grabbing}.edge-layer{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.map-node{color:#0000;cursor:pointer;z-index:4;-webkit-user-select:none;user-select:none;touch-action:none;border:2px solid #e2e8f0;border-radius:50%;width:14px;height:14px;padding:0;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 2px #0f172ab3}.map-node:after{content:attr(data-label);color:#e2e8f0;white-space:nowrap;pointer-events:none;opacity:0;background:#0f172aeb;border:1px solid #334155;border-radius:.4rem;padding:.25rem .5rem;font-size:.75rem;transition:opacity .12s ease-in-out;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.map-node.selected{border-color:#bae6fd;box-shadow:0 0 0 4px #38bdf84d}.map-node:hover:after,.map-node:focus-visible:after{opacity:1}.canvas-ui-root{z-index:2;pointer-events:none;position:absolute;inset:0}.canvas-stack{pointer-events:auto;flex-direction:column;gap:.65rem;display:flex;position:absolute}.canvas-stack--top-right{align-items:flex-end;max-width:min(360px,100% - 1.7rem);top:.85rem;right:.85rem}.canvas-stack--top-left{align-items:flex-start;max-width:min(360px,100% - 1.7rem);top:.85rem;left:.85rem}.canvas-stack--bottom-left{align-items:flex-start;max-width:min(380px,100% - 1.7rem);bottom:.85rem;left:.85rem}.canvas-stack--bottom-right{align-items:flex-end;bottom:2.1rem;right:.85rem}.map-grid-line{stroke:#334155;stroke-width:.14px;opacity:.5}.map-axis{pointer-events:none;z-index:3;-webkit-user-select:none;user-select:none;position:absolute}.map-axis--y{background:#0f172ae6;border-right:1px solid #475569;width:2.65rem;top:0;bottom:0;left:0}.map-axis--x{background:#0f172ae6;border-top:1px solid #475569;height:1.9rem;bottom:0;left:0;right:0}.map-axis-title{letter-spacing:.04em;text-transform:uppercase;color:#94a3b8;font-size:.65rem;font-weight:600;position:absolute}.map-axis-title--y{top:.45rem;left:.3rem}.map-axis-title--x{bottom:.3rem;right:.55rem}.map-axis-tick{display:flex;position:absolute}.map-axis-tick--y{flex-direction:row;justify-content:flex-end;align-items:center;left:0;right:0;transform:translateY(-50%)}.map-axis-tick--x{flex-direction:column;align-items:center;bottom:.2rem;transform:translate(-50%)}.map-axis-tick-mark{background:#64748b;flex-shrink:0}.map-axis-tick--y .map-axis-tick-mark{flex-shrink:0;width:8px;height:1px}.map-axis-tick--x .map-axis-tick-mark{width:1px;height:10px;margin-bottom:.2rem}.map-axis-tick-label{font-variant-numeric:tabular-nums;color:#e2e8f0;font-size:.7rem;line-height:1}.map-axis-tick--y .map-axis-tick-label{padding-right:.3rem;font-size:.65rem}.map-axis-tick--x .map-axis-tick-label{padding-bottom:.1rem}.map-zoom-controls{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0f172a6b;border:1px solid #94a3b838;border-radius:.65rem;flex-direction:column;align-items:flex-end;gap:.35rem;padding:.4rem .45rem;display:flex;box-shadow:0 4px 16px #0000001f}.map-zoom-bottom-row{flex-direction:row;align-items:center;gap:.45rem;display:flex}.map-zoom-button{color:#e2e8f0;cursor:pointer;background:#1e293b73;border:1px solid #94a3b847;border-radius:.45rem;width:2.25rem;height:2.25rem;font-size:1.15rem;line-height:1}.map-zoom-button:hover:not(:disabled){background:#3341558c;border-color:#94a3b873}.map-zoom-button:disabled{opacity:.4;cursor:not-allowed}.map-zoom-level{text-align:right;color:#94a3b8;-webkit-user-select:none;user-select:none;white-space:nowrap;margin:0;font-size:.72rem;line-height:1.25}.map-zoom-level strong{color:#e2e8f0;font-size:.82rem;font-weight:600}.floating-inspector,.graph-edit-panel{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172af0;border:1px solid #0b1220;border-radius:.65rem;width:100%;min-width:250px;padding:.85rem}.node-type-key{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172af0;border:1px solid #0b1220;border-radius:.55rem;width:max-content;min-width:0;max-width:11.25rem;padding:.55rem .65rem}.node-type-key--header{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:none;padding:0;position:relative}.node-type-key--header.node-type-key--collapsed{width:auto}.node-type-key--header .node-type-key-toggle{white-space:nowrap}.node-type-key--header .node-type-key-list{z-index:25;background:#111827;border:1px solid #334155;border-radius:.5rem;min-width:10.5rem;margin:0;padding:.55rem .65rem;position:absolute;top:calc(100% + .35rem);right:0;box-shadow:0 12px 28px #00000073}.canvas-add-node-controls{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172af0;border:1px solid #0b1220;border-radius:.65rem;padding:.65rem}.canvas-add-node-controls .save-button{width:100%;display:block}.canvas-add-node-hint{max-width:280px;margin-top:.45rem}.add-node-type-picker{max-width:520px;margin-top:.35rem}.add-node-type-picker-label{color:#94a3b8;margin:0 0 .4rem;font-size:.8rem}.add-node-type-chip-grid{flex-wrap:wrap;gap:.4rem;display:flex}.add-node-type-chip{color:#e2e8f0;cursor:pointer;background:#1e293bf2;border:1px solid #334155;border-radius:.45rem;align-items:center;gap:.35rem;padding:.35rem .5rem;font-size:.78rem;display:inline-flex}.add-node-type-chip:hover{border-color:#64748b}.add-node-type-chip--selected{border-color:#38bdf8;box-shadow:0 0 0 1px #38bdf859}.add-node-type-chip .node-type-swatch{width:10px;height:10px}.canvas-add-edge-button{margin-top:.45rem}.graph-edit-panel .section-title{margin-bottom:.45rem}.graph-edit-subheading{margin-top:.85rem;margin-bottom:.35rem}.graph-edit-subheading-muted{margin-top:.75rem;margin-bottom:.35rem}.graph-edit-label-spaced{margin-top:.5rem;display:block}.canvas-panel-input{width:100%;margin-top:.25rem}.graph-edit-button-full{width:100%;margin-top:.65rem}.node-type-key-toggle{width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:.5rem;padding:0;display:flex}.node-type-key-toggle .section-title{margin:0}.node-type-key-toggle-caret{color:#94a3b8;font-size:.85rem;line-height:1}.node-type-key .section-title{margin-bottom:.35rem;font-size:.74rem}.node-type-key-list{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.node-type-key-list li{color:#e2e8f0;align-items:center;gap:.4rem;font-size:.78rem;line-height:1.25;display:flex}.node-type-key .node-type-swatch{flex-shrink:0;width:11px;height:11px}.node-type-swatch{border:2px solid #f8fafcbf;border-radius:50%;flex-shrink:0;width:12px;height:12px;box-shadow:0 0 0 1px #0f172a99}.graph-edit-panel .edge-edit-list{max-height:140px}.edge-edit-list{gap:.45rem;max-height:220px;margin:.35rem 0 0;padding:0;list-style:none;display:grid;overflow-y:auto}.edge-edit-row{background:#0f172a;border:1px solid #1f2937;border-radius:.45rem;justify-content:space-between;align-items:center;gap:.5rem;padding:.4rem .5rem;display:flex}.edge-edit-label{color:#e2e8f0;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.8rem;overflow:hidden}.inspector-edge-list{gap:.4rem;margin:.5rem 0 0;padding:0;list-style:none;display:grid}.inspector-edge-row{justify-content:space-between;align-items:center;gap:.35rem;display:flex}.inspector-edge-label{color:#cbd5e1;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.78rem;overflow:hidden}.inspector-edge-row .logout-button{flex-shrink:0;padding:.35rem .55rem;font-size:.75rem}.inspector-content p{color:#cbd5e1;justify-content:space-between;gap:.5rem;margin:.3rem 0;display:flex}.panel-backdrop{z-index:45;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);cursor:pointer;background:#0206179e;border:none;margin:0;padding:0;position:fixed;inset:0}.mobile-dialog-backdrop{z-index:60;padding:1rem;padding-bottom:max(1rem, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#020617b8;place-items:end center;display:grid;position:fixed;inset:0}.mobile-dialog{width:min(100%,22rem)}.mobile-dialog-header{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.35rem;display:flex}.create-map-popover--modal{width:100%;position:static;box-shadow:0 18px 40px #00000073}@media (width<=840px){.editor-shell{grid-template-rows:1fr;grid-template-columns:1fr}.panel{z-index:50;width:min(20rem,88vw);max-height:none;padding-top:max(1.15rem, env(safe-area-inset-top));padding-bottom:max(1rem, env(safe-area-inset-bottom));border-bottom:none;border-right:1px solid #1f2937;transition:transform .22s;position:fixed;top:0;bottom:0;left:0;transform:translate(-105%);box-shadow:12px 0 32px #00000059}.panel.panel--open{transform:translate(0)}.workspace{min-width:0;min-height:0}.workspace-header{padding:.75rem .85rem;padding-top:max(.75rem, env(safe-area-inset-top));flex-wrap:wrap;gap:.65rem}.workspace-header-start{flex:100%;order:1}.workspace-header-actions{flex:auto;order:2;justify-content:flex-end;margin-left:auto}.workspace-header-title-row{align-items:flex-start;width:100%}.workspace-header,.workspace-header-start,.workspace-header-title-row{overflow:visible}.workspace-header-toolbar{width:100%;overflow:visible}.workspace-header-toolbar .graph-tools-dropdown{z-index:35;min-width:10.5rem;max-width:calc(100vw - 1.7rem);left:0;right:auto}.workspace-floor-plan-bar,.workspace-edit-panel,.workspace-edit-hint{max-width:100%}.add-node-type-chip-grid{gap:.35rem}.node-list{max-height:min(36vh,280px)}.canvas-stack--top-right{max-width:min(280px,100% - 1.1rem);top:.55rem;right:.55rem}.canvas-stack--bottom-right{bottom:max(1.65rem, calc(1.65rem + env(safe-area-inset-bottom)));right:.55rem}.floating-inspector{min-width:0}.workspace-header h2{font-size:1.05rem}.workspace-header-actions{justify-content:space-between;gap:.4rem;width:100%}.workspace-header-actions-primary{flex:auto;min-width:0}.workspace-save-button{flex:none}.header-actions-menu{margin-left:auto}.workspace-header-toolbar .graph-tools-menu{flex:calc(50% - .25rem);min-width:0}.workspace-header-toolbar .graph-tools-trigger,.floor-plan-import-button{flex:calc(50% - .25rem);justify-content:center;min-width:0}.workspace-header-toolbar .graph-tools-icon-button{flex:0 0 2.35rem;min-width:2.35rem}.workspace-header-toolbar .graph-tools-menu .graph-tools-trigger{width:100%}.header-actions-dropdown{z-index:25;background:#111827;border:1px solid #334155;border-radius:.5rem;min-width:11.5rem;padding:.35rem;position:absolute;top:calc(100% + .35rem);right:0;box-shadow:0 12px 28px #00000073}.canvas{min-height:280px}.map-axis--y{width:2.2rem}.map-axis--x{height:1.55rem}.map-axis-tick-label{font-size:.58rem}.canvas-stack--top-right{top:auto;bottom:max(5.75rem, calc(5.75rem + env(safe-area-inset-bottom)));align-items:stretch;max-width:none;left:.55rem;right:.55rem}.floating-inspector{border-radius:.65rem;width:100%;display:none}.map-zoom-controls{border-radius:.5rem;gap:.2rem;padding:.25rem .3rem}.map-zoom-bottom-row{gap:.3rem}.map-zoom-button{border-radius:.35rem;width:1.65rem;min-width:0;height:1.65rem;min-height:0;font-size:.95rem}.map-zoom-level{font-size:.62rem}.map-zoom-level strong{font-size:.7rem}.map-zoom-level-range{display:none}}@media (hover:none) and (pointer:coarse){.graph-tools-trigger,.map-zoom-button,.panel-close-button,.node-list button,.add-node-type-chip{min-height:44px}.map-node{width:18px;height:18px}.map-node.selected{box-shadow:0 0 0 5px #38bdf859}}@media (width<=840px) and (hover:none) and (pointer:coarse){.map-zoom-button{width:1.65rem;height:1.65rem;min-height:unset}}
