:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--pg-bg:#fff;--pg-surface:#fff;--pg-surface-2:#f9fafb;--pg-surface-3:#f3f4f6;--pg-surface-4:#e5e7eb;--pg-surface-5:#d1d5db;--pg-border:#e5e7eb;--pg-border-soft:#f3f4f6;--pg-border-strong:#d1d5db;--pg-text:#111827;--pg-text-2:#374151;--pg-text-3:#4b5563;--pg-muted:#6b7280;--pg-faint:#9ca3af;--pg-danger:#dc2626;--pg-danger-bg:#fef2f2;--pg-danger-border:#fecaca;--pg-success:#16a34a;--pg-success-bg:#f0fdf4;--pg-success-border:#bbf7d0;--pg-warning:#d97706;--pg-warning-strong:#b45309;--pg-warning-bg:#fffbeb;--pg-warning-border:#fde68a;--pg-info:#2563eb;--pg-info-bg:#eef2ff;--pg-info-border:#c7d2fe;--pg-purple:#6b21a8;--pg-purple-bg:#f3e8ff;--pg-purple-border:#ddd6fe;--pg-brand:#0d0858;--pg-link:#208f91;--pg-link-hover:#0b5d5e;--pg-active-bg:#e0f5f5;--pg-active-border:#7fd4d3;--pg-active-fg:#0b5d5e;--pg-nav-bg:#6366f10f;--pg-tint-link:#eaf2fe;--pg-tint-background:#e3f6f5;--pg-tint-poll:#fef2f2;--pg-tint-search:#fffbeb;--pg-tint-personalization:#f3e8ff;--pg-tint-backup:#ecfdf5;--pg-tint-scan:#e0f2fe;--pg-panel-bg:#10b9810d;--pg-panel-head:#f3fbf8;--pg-panel-sheet:#f2fbf7;--pg-view-bg:#fff;--pg-link-default:#6b7280;--pg-edge-sheath:#fff;--pg-minimap-border:#111827;--pg-minimap-bg:#e5e7eb;--pg-label-bg:#ffffffeb;--pg-attribution-bg:#ffffffbf;--pg-map-veil:#fff}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--pg-map-veil:#0e1016;--pg-bg:#0e1016;--pg-surface:#161922;--pg-surface-2:#1d2130;--pg-surface-3:#242938;--pg-surface-4:#2a2f3d;--pg-surface-5:#3a4052;--pg-border:#2a2f3d;--pg-border-soft:#222634;--pg-border-strong:#3a4052;--pg-text:#e6e8ef;--pg-text-2:#cdd1dc;--pg-text-3:#b4b9c6;--pg-muted:#9aa0b0;--pg-faint:#7a8092;--pg-danger:#f08a82;--pg-danger-bg:#3a1c1b;--pg-danger-border:#6b2f2b;--pg-success:#7fdc9c;--pg-success-bg:#15301f;--pg-success-border:#2c5a3b;--pg-warning:#e8c766;--pg-warning-strong:#f0d58a;--pg-warning-bg:#33290f;--pg-warning-border:#5e4c1c;--pg-info:#8fb0ff;--pg-info-bg:#1f2a42;--pg-info-border:#34436a;--pg-purple:#c9b8f5;--pg-purple-bg:#2b2547;--pg-purple-border:#4e4380;--pg-brand:#e4e8f6;--pg-link:#3ec9c7;--pg-link-hover:#7fe3e1;--pg-active-bg:#00cbc924;--pg-active-border:#1f6f73;--pg-active-fg:#7fe3e1;--pg-nav-bg:#13161e;--pg-tint-link:#1c2538;--pg-tint-background:#162a2c;--pg-tint-poll:#2c1c22;--pg-tint-search:#2b2716;--pg-tint-personalization:#251f3a;--pg-tint-backup:#16291f;--pg-tint-scan:#172736;--pg-panel-bg:#141a1c;--pg-panel-head:#172124;--pg-panel-sheet:#172124;--pg-view-bg:#2a2e3a;--pg-link-default:#9aa0b0;--pg-edge-sheath:#2a2e3a;--pg-minimap-border:#4f5878;--pg-minimap-bg:#242938;--pg-label-bg:#161922eb;--pg-attribution-bg:#161922bf}html,body,#root{height:100%;margin:0}body{background:var(--pg-bg);color:var(--pg-text);font-family:system-ui,Segoe UI,Roboto,sans-serif}a,a:visited{color:var(--pg-link)}a:hover{color:var(--pg-link-hover)}.app-root{height:100dvh}html:has(.app-root){overscroll-behavior:none;overflow:hidden}html:has(.app-root) body{overscroll-behavior:none;overflow:hidden}.hscroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.device-panel{border-left:1px solid var(--pg-border);box-sizing:border-box;background:var(--pg-panel-bg);flex-shrink:0;width:480px;padding:16px;overflow-y:auto}.device-panel-head{z-index:3;background:var(--pg-panel-head);border-bottom:1px solid var(--pg-border);justify-content:space-between;align-items:flex-start;gap:8px;margin:-16px -16px 8px;padding:16px 16px 8px;display:flex;position:sticky;top:-16px}@media (width<=768px){.device-panel{border-left:none;border-top:1px solid var(--pg-border);background:var(--pg-panel-sheet);z-index:50;border-radius:14px 14px 0 0;width:auto;max-height:85dvh;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -6px 24px #00000047}.device-panel-head{background:var(--pg-panel-sheet);border-radius:14px 14px 0 0}}.react-flow__node-device.selected{z-index:20!important;box-shadow:0 0 0 3px #2563eb,0 0 0 7px #2563eb47,0 8px 20px #0006!important}.pg-geo .react-flow__node-device,.pg-geo .react-flow__node-deviceReplica{filter:drop-shadow(0 0 1.5px #fff)drop-shadow(0 0 1.5px #fff)drop-shadow(0 2px 4px #0009)}.pg-geo .react-flow__edges{filter:drop-shadow(0 0 1.5px #fff)drop-shadow(0 0 1px #fff)}@keyframes pingamelo-device-flash{0%,to{box-shadow:0 0 0 3px #f59e0b,0 0 22px 6px #f59e0b99}50%{box-shadow:0 0 0 3px #f59e0b,0 0 8px 2px #f59e0b33}}.react-flow__node-device.device-flash{z-index:15;animation:1.1s ease-in-out infinite pingamelo-device-flash}@keyframes pingamelo-shape-handle-pulse{0%,to{box-shadow:0 0 0 2px #fff,0 0 0 5px #6366f1e6}50%{box-shadow:0 0 0 2px #fff,0 0 0 10px #6366f100}}.pg-shape-handle-pulse{animation:1.3s ease-in-out infinite pingamelo-shape-handle-pulse}@keyframes pingamelo-minimap-down-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.35)}}.react-flow__minimap-node.pg-minimap-down{transform-box:fill-box;transform-origin:50%;animation:1.2s ease-in-out infinite pingamelo-minimap-down-pulse}.react-flow__minimap{opacity:.5;transition:opacity .15s}.react-flow__minimap:hover,.react-flow__minimap:focus-within,.react-flow__minimap:active{opacity:1}.pg-minimap-toggle{width:26px;height:18px;color:var(--pg-text-2);background:var(--pg-surface);border:1px solid var(--pg-minimap-border);opacity:.6;cursor:pointer;border-radius:3px;padding:0;font:600 10px/1 system-ui,sans-serif}.pg-minimap-toggle:hover,.pg-minimap-toggle:focus-visible{opacity:1}@keyframes pingamelo-wave-scroll{0%{transform:translate(0)}to{transform:translateX(var(--pingamelo-wave-shift))}}.arrow-target{border-radius:50%;width:14px;height:14px}.arrow-target-editable:hover{cursor:move;box-shadow:0 0 0 2px #fff,0 0 0 4px #2563eb}.placing-arrow .react-flow__pane{cursor:crosshair}.react-flow{--xy-background-color:transparent}:where(html[data-theme=dark]) :where(button){color:var(--pg-text);background-color:#242938;border:1px solid #3a4052;border-radius:4px;padding:1px 6px}:where(html[data-theme=dark]) :where(button:hover:not(:disabled)){background-color:#2e3446;border-color:#4f5878}:where(html[data-theme=dark]) :where(button:disabled){color:var(--pg-faint)}:where(html[data-theme=dark]) :where(input:not([type=checkbox],[type=radio],[type=range],[type=color]),select,textarea){color:var(--pg-text);background-color:#1d2130;border:1px solid #3a4052;border-radius:3px}.tools-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;display:grid}@media (width<=900px){.tools-grid{grid-template-columns:minmax(0,1fr)}}.tool-card{border:1px solid var(--pg-border);background:var(--pg-surface);border-radius:8px;min-width:0;padding:12px 16px 16px}.tool-card h3{margin-top:0}.tool-base{flex-direction:column;display:flex}.tool-base>.tool-controls{margin-top:auto}@media (width<=480px){.tool-card{padding:10px 10px 12px}}
