/* Edge operations: light, translucent surfaces; text and native controls retain
   full opacity. Scoped to the editor, never changes the model's own colours. */
.edge-tools[hidden],.edge-badge[hidden],.edge-grips[hidden],.edge-tools [hidden],.edge-grips [hidden]{display:none!important}
.edge-tools{position:absolute;top:12px;right:12px;z-index:49;width:300px;max-width:calc(100% - 24px);max-height:calc(100% - 76px);overflow:auto;box-sizing:border-box;padding:14px;background:rgba(250,253,255,.88);color:#142b46;border:1px solid #c2d5e9;border-radius:14px;box-shadow:0 8px 28px #1638582b;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);font:13px/1.5 system-ui,sans-serif;overscroll-behavior:contain;touch-action:pan-y;color-scheme:light}
.edge-tools header{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:16px}.edge-tools header button{font-size:24px;padding:2px 8px;min-width:36px}
.edge-tools p{margin:8px 0;color:#47617a}.edge-tools label{display:block;font-weight:650;margin:10px 0}.edge-tools input{display:block;box-sizing:border-box;width:100%;background:#fff!important;color:#132b44!important;border:1px solid #b8cce2!important;border-radius:8px;padding:10px;font:16px/1.2 system-ui;margin-top:5px}
.edge-tools button,.edge-badge button{border:1px solid #b7cde5;border-radius:8px;padding:8px 11px;font:600 13px/1.3 system-ui;min-height:38px;cursor:pointer;touch-action:manipulation;background:#f6faff;color:#154575}
.edge-tools button:hover,.edge-badge button:hover{background:#e6f3ff}.edge-tools button:focus-visible,.edge-badge button:focus-visible{outline:2px solid #1682ed;outline-offset:2px}.edge-tools button:disabled{opacity:.5;cursor:wait}
.edge-tools .edge-primary{background:#097ade;border-color:#097ade;color:white}.edge-tools .edge-note{font-size:12px;background:rgba(230,241,253,.8);padding:8px;border-radius:8px}.edge-tools .is-error,.edge-badge.is-error span{color:#a61f39}
.edge-actions{display:flex;gap:7px;flex-wrap:wrap;position:sticky;bottom:-14px;padding:10px 0;background:rgba(250,253,255,.96)}
.edge-badge{position:absolute;bottom:10px;left:10px;z-index:48;display:flex;align-items:center;gap:8px;max-width:calc(100% - 20px);box-sizing:border-box;background:rgba(250,253,255,.92);color:#183650;border:1px solid #bfd3e6;border-radius:10px;padding:8px 10px;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);box-shadow:0 2px 10px #193e5220;font:12px/1.35 system-ui,sans-serif}.edge-badge span{max-width:460px}.edge-badge button{white-space:nowrap}
.edge-grips{position:absolute;inset:0;z-index:43;overflow:hidden;pointer-events:none;user-select:none;-webkit-user-select:none;touch-action:none}.edge-grips>svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.edge-stem{fill:none;stroke:#e58926;stroke-width:2;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}
.edge-grip{position:absolute;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);width:42px;height:42px;min-width:0!important;min-height:0!important;padding:0!important;margin:0!important;border:0!important;background:transparent!important;box-shadow:none!important;pointer-events:auto;touch-action:none;cursor:grab;-webkit-tap-highlight-color:transparent}.edge-grip svg{width:36px;height:36px;transform:rotate(var(--edge-angle,0rad));fill:#e58b24;stroke:#fff;stroke-width:1.6;filter:drop-shadow(0 1px 2px #152d4760);pointer-events:none}.edge-grip:hover svg,.edge-grip:focus-visible svg{fill:#147acd}.edge-grip:focus-visible{outline:2px solid #147acd!important;border-radius:8px}.edge-grips.is-dragging .edge-grip{cursor:grabbing}.edge-grips.is-busy .edge-grip{opacity:.45;pointer-events:none;cursor:wait}
.edge-readout{position:absolute;transform:translateX(-50%);padding:5px 8px;white-space:nowrap;border:1px solid #c1d4e4;border-radius:7px;background:rgba(255,253,247,.94);color:#46301c;font:650 12px/1.25 system-ui,sans-serif;pointer-events:none;box-shadow:0 2px 6px #13243820}
.editor-context-menu.is-mini-held .editor-context-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(pointer:coarse){.edge-grip{width:54px;height:54px}.edge-grip svg{width:40px;height:40px}}
@media(max-width:700px){.edge-tools{top:auto;right:8px;bottom:8px;width:calc(100% - 16px);max-width:none;max-height:55%;padding:12px}.edge-tools:not([hidden])~.edge-badge{display:none}.edge-badge{bottom:8px;left:8px;font-size:11px;padding:6px 8px;gap:6px}.edge-badge span{flex:1;max-width:none}.edge-badge button{padding:6px 8px;font-size:12px;min-height:36px}}
/* Multi-selection and persistent-feature controls. Keep the native canvas clear;
   numerical inspectors in the Android app are rendered by its existing bridge. */
.edge-badge [hidden]{display:none!important}
.edge-badge{flex-wrap:wrap;align-items:flex-start;max-width:min(780px,calc(100% - 20px))}
.edge-badge>span{flex:1 0 100%;max-width:none}
.edge-selection-actions{display:flex;flex-wrap:wrap;align-items:center;gap:7px;width:100%}
.edge-quick-label{display:flex;align-items:center;gap:6px;margin:0;color:#173956;font-weight:650}
.edge-quick-label input{width:60px;box-sizing:border-box;min-height:38px;background:#fff!important;color:#172e49!important;border:1px solid #b7cde5;border-radius:8px;padding:5px 6px;font-size:16px}
.edge-badge button[aria-pressed=true]{border-color:#1682ed;background:#e5f2ff;color:#084b83}
.edge-feature-list{z-index:52}
.edge-feature-list .edge-feature{display:block;width:100%;margin:9px 0;text-align:left;line-height:1.45}
.edge-feature-list .edge-feature:disabled{cursor:default;opacity:.7}
@media(max-width:700px){.edge-selection-actions{gap:5px}.edge-badge>span{font-size:12px}.edge-badge{max-width:calc(100% - 16px)}.edge-selection-actions button{flex:1 1 auto}.edge-quick-label{flex:0 0 auto}}
