/* R4 plan editor: source symbols in a stable plan world; controls stay screen-space. */
.main.plan-main { padding:0; overflow:hidden; background:#fff; }
.plan-shell-r4 { height:100%; min-height:0; display:grid; grid-template-rows:64px minmax(0,1fr) 76px; background:#fff; }
.plan-toolbar-r4 { display:grid; grid-template-columns:1.35fr .85fr 1fr .8fr; gap:6px; align-items:center; padding:9px 10px 8px; border-bottom:1px solid #cfd8d2; background:#fff; z-index:8; }
.plan-toolbar-r4 button { min-width:0; min-height:43px; padding:0 7px; border:1px solid #9bb7dd; border-radius:8px; background:#fff; color:#063c97; font-size:12px; font-weight:850; white-space:nowrap; display:flex; align-items:center; justify-content:center; gap:5px; }
.plan-toolbar-r4 #survey { color:#fff; background:#0668c8; border-color:#0668c8; }
.plan-toolbar-r4 #survey.active { color:#6e4700; background:#fff4d6; border-color:#e2a825; }
.plan-toolbar-r4 .control-icon { width:19px; height:19px; }

.map-viewport-r4 { position:relative; min-height:0; overflow:hidden; isolation:isolate; background:#edf0ee; touch-action:none; user-select:none; -webkit-user-select:none; -webkit-touch-callout:none; }
.map-stage-r4 { position:absolute; width:792px; height:1224px; transform-origin:0 0; will-change:transform; }
.map-stage-r4 > img { display:block; width:792px; height:1224px; pointer-events:none; user-select:none; -webkit-user-drag:none; }
.world-markers-r4,.route-layer { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible; }
.route-layer polyline { fill:none; stroke:#0b63d9; stroke-width:.35; vector-effect:non-scaling-stroke; stroke-linecap:round; stroke-linejoin:round; }

.world-marker { --status-color:#e01e37; position:absolute; z-index:3; width:calc(var(--world-size) * 2.15); height:calc(var(--world-size) * 2.15); transform:translate(-50%,-50%); padding:0; border:0; background:transparent; color:var(--status-color); pointer-events:auto; touch-action:none; user-select:none; -webkit-user-select:none; -webkit-touch-callout:none; }
.world-marker.done { --status-color:#119447; }
.world-marker.incomplete { --status-color:#e01e37; }
.world-marker.attention { --status-color:#e0a400; }
.world-marker .status-ring { position:absolute; left:50%; top:50%; width:calc(var(--world-size) * 1.65); height:calc(var(--world-size) * 1.65); transform:translate(-50%,-50%); border:calc(var(--world-size) * .10) solid var(--status-color); border-radius:50%; background:transparent; box-shadow:0 0 0 calc(var(--world-size) * .035) rgba(255,255,255,.95); }
.world-marker.pvm .status-ring { width:calc(var(--world-size) * 2.8); height:calc(var(--world-size) * 1.55); border-radius:calc(var(--world-size) * .2); }
.world-marker.program-marker .status-ring { width:calc(var(--world-size) * 1.55); height:calc(var(--world-size) * 1.55); border-radius:calc(var(--world-size) * .22); }
.symbol-geometry { position:absolute; left:50%; top:50%; display:block; transform:translate(-50%,-50%); pointer-events:none; }
.symbol-geometry.camera { width:calc(var(--world-size) * 1.15); height:calc(var(--world-size) * 1.55); }
.symbol-geometry.pvm { width:calc(var(--world-size) * 2.5); height:calc(var(--world-size) * 1.4); }
.symbol-geometry.power,.symbol-geometry.equipment { width:calc(var(--world-size) * 1.25); height:calc(var(--world-size) * 1.25); }
.source-geometry { display:block; max-width:100%; max-height:100%; width:auto; height:auto; transform-origin:50% 50%; }
.source-mask { width:100%; height:100%; background:currentColor; -webkit-mask:var(--source-mask) center / contain no-repeat; mask:var(--source-mask) center / contain no-repeat; }
.symbol-geometry.camera .source-geometry { width:auto; height:100%; transition:transform .06s linear; }
.symbol-geometry.pvm .source-geometry { width:100%; height:auto; }
.program-geometry { display:grid; place-items:center; width:100%; height:100%; color:currentColor; }
.program-geometry svg { width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
.program-geometry svg path:first-child { fill:rgba(29,75,130,.08); }
.symbol-label { position:absolute; left:68%; top:-18%; min-width:calc(var(--world-size) * .64); padding:0 calc(var(--world-size) * .06); border:calc(var(--world-size) * .055) solid var(--status-color); border-radius:999px; background:#fff; color:#14231c; font-size:calc(var(--world-size) * .44); line-height:calc(var(--world-size) * .63); font-weight:950; text-align:center; box-shadow:0 1px 1px rgba(0,0,0,.15); }
.symbol-geometry.pvm .symbol-label { left:71%; top:55%; font-size:calc(var(--world-size) * .35); }
.aim-unknown { position:absolute; right:-9%; top:-16%; display:grid; place-items:center; width:calc(var(--world-size) * .42); height:calc(var(--world-size) * .42); border:calc(var(--world-size) * .06) solid #1d3b2f; border-radius:50%; background:#fff; color:#1d3b2f; font-size:calc(var(--world-size) * .34); font-weight:950; line-height:1; }
.status-cue { position:absolute; right:5%; bottom:6%; display:grid; place-items:center; width:calc(var(--world-size) * .5); height:calc(var(--world-size) * .5); border:calc(var(--world-size) * .05) solid #fff; border-radius:50%; background:var(--status-color); color:#fff; font-size:calc(var(--world-size) * .32); font-weight:950; line-height:1; }
.planned-anchor-crosshair { position:absolute; z-index:1; display:block; width:calc(var(--world-size) * 1.35); height:calc(var(--world-size) * 1.35); transform:translate(-50%,-50%); border:calc(var(--world-size) * .075) dashed #1475d2; border-radius:50%; background:rgba(255,255,255,.22); pointer-events:none; }
.planned-anchor-crosshair::before,.planned-anchor-crosshair::after { content:''; position:absolute; left:50%; top:50%; background:#1475d2; opacity:.78; transform:translate(-50%,-50%); }
.planned-anchor-crosshair::before { width:calc(var(--world-size) * 1.9); height:calc(var(--world-size) * .075); }
.planned-anchor-crosshair::after { width:calc(var(--world-size) * .075); height:calc(var(--world-size) * 1.9); }

.plan-key-rail { min-height:76px; height:76px; border-top:1px solid #cfd8d2; background:#fff; display:flex; align-items:center; gap:9px; padding:7px 10px max(7px, env(safe-area-inset-bottom)); overflow:hidden; user-select:none; -webkit-user-select:none; -webkit-touch-callout:none; z-index:9; }
.idle-key { overflow-x:auto; scrollbar-width:none; }
.idle-key::-webkit-scrollbar,.key-scroll::-webkit-scrollbar { display:none; }
.status-key { display:flex; align-items:center; gap:5px; flex:0 0 auto; color:#263d33; font-size:10px; font-weight:850; white-space:nowrap; }
.key-symbol { position:relative; display:inline-grid; place-items:center; width:28px; height:25px; }
.key-symbol .symbol-geometry { --world-size:18px; position:relative; left:auto; top:auto; transform:none; }
.key-symbol.camera-key .symbol-geometry.camera { width:16px; height:23px; }
.key-symbol.monitor-key { width:41px; }
.key-symbol.monitor-key .symbol-geometry.pvm { width:40px; height:22px; }
.key-symbol .symbol-label,.key-symbol .aim-unknown { display:none; }
.key-symbol.done { color:#119447; }.key-symbol.incomplete { color:#e01e37; }.key-symbol.attention { color:#e0a400; }
.key-dot { width:9px; height:9px; border-radius:50%; flex:0 0 9px; }
.key-dot.done { background:#119447; }.key-dot.incomplete { background:#e01e37; }.key-dot.attention { background:#e0a400; }
.key-scroll { width:100%; display:flex; align-items:center; gap:7px; overflow-x:auto; padding:0 1px; }
.selected-key-summary { flex:0 0 auto; display:grid; gap:2px; min-width:105px; color:#123c7c; }
.selected-key-summary strong { font-size:12px; line-height:1.1; }
.selected-key-summary span { display:flex; align-items:center; gap:4px; color:#4f5e55; font-size:10px; font-weight:800; white-space:nowrap; }
.selected-key-summary .key-dot { display:inline-block; flex:0 0 8px; width:8px; height:8px; }
.chooser-key > div:first-child { min-width:105px; display:grid; gap:2px; }
.chooser-key strong { color:#123c7c; font-size:13px; }.chooser-key span { color:#4f5e55; font-size:10px; line-height:1.15; }
.chooser-actions { display:flex; align-items:center; gap:6px; overflow-x:auto; }.chooser-actions .secondary { min-height:39px; padding:0 8px; white-space:nowrap; }
.plan-key-item { flex:0 0 auto; min-width:56px; min-height:58px; padding:5px 7px; display:grid; justify-items:center; align-content:center; gap:3px; border:0; border-radius:9px; background:transparent; color:#0c4ba5; font-size:10px; font-weight:850; }
.plan-key-item:active { background:#e9f2ff; }
.control-icon { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
.plan-key-item .issue { color:#d32535; }
.placement-key { justify-content:flex-start; }
.placement-key .key-preview { position:relative; width:44px; height:44px; flex:0 0 44px; }
.placement-key .key-preview .symbol-geometry { --world-size:26px; left:50%; top:50%; }
.placement-key > div,.route-key > div,.mapping-review-key > div { min-width:0; display:grid; gap:2px; }
.placement-key strong,.route-key strong,.mapping-review-key strong { font-size:13px; color:#123c7c; }
.placement-key span:not(.key-preview),.route-key span,.mapping-review-key span { color:#4f5e55; font-size:11px; line-height:1.2; }
.placement-key .ghost,.route-key .ghost { min-height:38px; padding:0 7px; margin-left:auto; }
.route-key .secondary { min-height:38px; padding:0 8px; margin-left:auto; white-space:nowrap; }
.mapping-review-key .secondary { min-height:38px; padding:0 8px; margin-left:auto; white-space:nowrap; }
.survey-plan-banner { position:absolute; left:10px; right:10px; top:10px; z-index:7; display:grid; gap:2px; padding:8px 10px; border:1px solid #e0a400; border-radius:8px; background:rgba(255,250,229,.96); color:#6e4700; font-size:11px; pointer-events:none; }
.survey-plan-banner strong { text-transform:uppercase; letter-spacing:.06em; }

.add-catalog { position:absolute; left:8px; top:8px; width:min(320px, calc(100% - 16px)); max-height:calc(100% - 16px); z-index:15; display:grid; grid-template-rows:auto auto minmax(0,1fr); overflow:hidden; border:1px solid #b8c9bf; border-radius:12px; background:rgba(255,255,255,.98); box-shadow:0 12px 28px rgba(17,35,26,.25); pointer-events:auto; user-select:none; -webkit-user-select:none; }
.add-catalog header { display:flex; align-items:center; justify-content:space-between; padding:10px 11px 7px; color:#183f77; }
.icon-close { width:35px; min-height:35px; border:0; border-radius:8px; background:#edf2ef; color:#253b31; font-size:23px; line-height:1; }
.catalog-search { display:grid; gap:4px; padding:0 11px 8px; color:#587064; font-size:11px; font-weight:850; }
.catalog-search input { min-height:38px; padding:0 9px; border:1px solid #c5d3ca; border-radius:7px; background:#fff; color:#15201c; font-size:14px; user-select:text; -webkit-user-select:text; }
.catalog-list { min-height:0; overflow:auto; overscroll-behavior:contain; padding:0 9px 10px; }
.catalog-group { margin:8px 0 10px; }
.catalog-group h3 { margin:0 0 3px; color:#62766b; font-size:10px; letter-spacing:.07em; text-transform:uppercase; }
.catalog-row { display:grid; grid-template-columns:1fr 35px; align-items:stretch; border-top:1px solid #e0e7e2; }
.catalog-select { min-width:0; min-height:43px; padding:4px 3px; display:grid; grid-template-columns:42px minmax(0,1fr) auto; align-items:center; gap:5px; border:0; background:transparent; color:#173a73; text-align:left; font-size:13px; font-weight:800; }
.catalog-select small { color:#6c7f74; font-size:9px; font-weight:750; white-space:nowrap; }
.catalog-preview { position:relative; width:38px; height:31px; }
.catalog-preview .symbol-geometry { --world-size:23px; left:50%; top:50%; }
.catalog-preview .symbol-geometry.camera { width:19px; height:29px; }
.catalog-preview .symbol-geometry.pvm { width:40px; height:23px; }
.catalog-preview .symbol-label,.catalog-preview .aim-unknown { display:none; }
.catalog-drag { min-height:43px; border:0; border-left:1px solid #e0e7e2; background:#f4f8f5; color:#365d4d; font-size:17px; letter-spacing:-3px; touch-action:none; }

.radial-editor-r4 { position:absolute; z-index:14; width:172px; height:172px; transform:translate(-50%,-50%); border:2px solid #0b70e7; border-radius:50%; background:rgba(255,255,255,.96); box-shadow:0 11px 25px rgba(0,0,0,.25); pointer-events:auto; touch-action:none; user-select:none; -webkit-user-select:none; -webkit-touch-callout:none; }
.radial-center { position:absolute; left:43px; top:43px; width:86px; height:86px; display:grid; place-items:center; align-content:center; border:3px solid #0b70e7; border-radius:50%; background:#fff; box-shadow:inset 0 0 0 2px rgba(255,255,255,.75); }
.radial-center .symbol-geometry { --world-size:48px; position:relative; left:auto; top:auto; transform:none; }
.radial-center .symbol-geometry.camera { width:31px; height:46px; }.radial-center .symbol-geometry.pvm { width:70px; height:34px; }.radial-center .symbol-label,.radial-center .aim-unknown { display:none; }
.radial-center .selected-blue-symbol { color:#0b70e7; }
.radial-center .selected-blue-symbol .source-geometry { filter:none; }
.radial-state { margin-top:-4px; color:#0b70e7; font-size:9px; font-weight:900; text-transform:uppercase; }
.radial-rotate-arc { position:absolute; left:45px; top:-7px; width:82px; height:48px; padding:0; display:grid; place-items:start center; border:3px solid #0b70e7; border-right-color:transparent; border-bottom-color:transparent; border-left-color:transparent; border-radius:50% 50% 0 0; background:transparent; color:#0b70e7; touch-action:none; }
.radial-rotate-arc .control-icon { width:20px; height:20px; margin-top:-9px; background:#fff; border-radius:50%; }
.radial-value { position:absolute; top:69px; width:50px; display:grid; gap:1px; color:#3e5d4e; font-size:8px; font-weight:900; text-transform:uppercase; }
.radial-value input { width:100%; min-height:27px; padding:0 4px; border:1px solid #a9c0b1; border-radius:6px; background:#fff; color:#153222; font-size:11px; font-weight:850; text-align:center; user-select:text; -webkit-user-select:text; }
.radial-cable-value { left:-32px; text-align:right; }.radial-number-value { right:-32px; text-align:left; }
.radial-move-handle,.radial-bottom-action { position:absolute; display:grid; place-items:center; width:42px; height:42px; padding:0; border:1.5px solid #a8bdd2; border-radius:50%; background:#fff; color:#0b70e7; box-shadow:0 3px 8px rgba(0,0,0,.18); touch-action:none; }
.radial-move-handle { right:-22px; bottom:12px; width:48px; height:48px; border-color:#0b70e7; }
.radial-bottom-action.work { left:22px; bottom:-20px; color:#06944c; }.radial-bottom-action.manual { left:65px; bottom:-25px; color:#0b70e7; }.radial-bottom-action.issue { right:22px; bottom:-20px; color:#d32535; }
.radial-bottom-action .control-icon,.radial-move-handle .control-icon { width:22px; height:22px; }
.contextual-key .plan-key-item[data-key-action="photos"] .control-icon { color:#06944c; }
.contextual-key .plan-key-item[data-key-action="issue"] .control-icon { color:#d32535; }

@media (max-width:360px) {
  .plan-toolbar-r4 { grid-template-columns:1.23fr .8fr .9fr .7fr; padding-left:6px; padding-right:6px; gap:4px; }
  .plan-toolbar-r4 button { padding:0 4px; font-size:11px; }
  .plan-key-rail { padding-left:6px; padding-right:6px; }
  .status-key { font-size:9px; }
  .add-catalog { width:calc(100% - 12px); left:6px; }
}

/* M01: screen/world metrics independent of render history. */
.world-marker { min-width:0; min-height:0; margin:0; box-sizing:border-box; }
.world-marker .status-ring { box-sizing:border-box; }
.source-mask, .symbol-geometry.camera .source-mask, .symbol-geometry.pvm .source-mask { width:100%; height:100%; }
.symbol-label { color:var(--status-color); }

/* M3: source-sized cameras, capped monitors; no render-history-dependent metrics. */
.map-stage-r4 { will-change:auto; }
.world-marker { width:var(--ring-w); height:var(--ring-h); box-shadow:none; }
.world-marker .status-ring, .world-marker.pvm .status-ring, .world-marker.program-marker .status-ring {
 width:var(--ring-w);height:var(--ring-h);border-width:var(--ink-stroke);box-shadow:none;
}
.world-marker.pvm .status-ring { border-radius:calc(var(--ink-stroke) * 3); }
.world-marker .symbol-geometry { width:var(--glyph-w);height:var(--glyph-h); }
.source-inline { width:100%!important;height:100%!important;max-width:none;max-height:none;fill:none;color:inherit;overflow:visible; }
.world-marker .symbol-label { font-size:var(--label-size);line-height:1.15;min-width:0;padding:0 .14em;left:100%;top:0;border-width:var(--ink-stroke);border-radius:.25em;white-space:nowrap;transform:none; }
.world-marker.pvm .symbol-label { font-size:var(--label-size);left:100%;top:0; }
.world-marker .status-cue { width:var(--cue-size);height:var(--cue-size);font-size:calc(var(--cue-size) * .75);border-width:calc(var(--ink-stroke) * .6);right:0;bottom:0; }
.world-marker .aim-unknown { width:var(--cue-size);height:var(--cue-size);font-size:calc(var(--cue-size) * .8);color:var(--status-color);border-color:var(--status-color);border-width:calc(var(--ink-stroke) * .75); }
.plan-shell-r4 { grid-template-areas:"toolbar" "viewport" "key"; }
.plan-toolbar-r4 {grid-area:toolbar;}
.map-viewport-r4 {grid-area:viewport;}
.plan-key-rail {grid-area:key;}
.plan-shell-r4.has-manual-return {grid-template-areas:"return" "toolbar" "viewport" "key";grid-template-rows:40px 64px minmax(0,1fr) 76px;}
.plan-shell-r4 > .manual-return-bar.plan-return {grid-area:return;position:static;inset:auto;width:100%;height:40px;min-height:40px;max-height:40px;margin:0;padding:4px 12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border:0;border-bottom:1px solid #c5d7e3;border-radius:0;z-index:auto;}
.radial-editor-r4 {background:rgba(255,255,255,.90);}
.radial-rotate-arc {left:62px;top:-50px;width:48px;height:48px;place-items:center;border:2px solid #0b70e7;border-radius:50%;background:#fff;box-shadow:0 2px 5px #1233;}
.radial-rotate-arc .control-icon {width:26px;height:26px;margin:0;background:transparent;}
.radial-delete-action {position:absolute;left:-24px;top:108px;width:44px;height:44px;min-height:44px;display:grid;place-items:center;padding:0;border:1.5px solid #d32535;border-radius:50%;background:#fff;color:#d32535;touch-action:manipulation;}
.radial-anchor-crosshair {display:none;position:absolute;left:50%;top:50%;width:22px;height:22px;transform:translate(-50%,-50%);pointer-events:none;z-index:3;}
.radial-anchor-crosshair::before,.radial-anchor-crosshair::after {content:"";position:absolute;left:50%;top:50%;background:#076deb;box-shadow:0 0 0 1px #fff;transform:translate(-50%,-50%);}
.radial-anchor-crosshair::before {width:22px;height:1.5px;}
.radial-anchor-crosshair::after {height:22px;width:1.5px;}
.radial-editor-r4.is-moving {background:rgba(255,255,255,.035);box-shadow:none;border-color:rgba(11,112,231,.3);}
.radial-editor-r4.is-moving .radial-center {background:transparent;border-color:transparent;box-shadow:none;}
.radial-editor-r4.is-moving .radial-center > *, .radial-editor-r4.is-moving .radial-value {visibility:hidden;}
.radial-editor-r4.is-moving .radial-anchor-crosshair {display:block;}
.radial-editor-r4.is-rotating .radial-value {opacity:.35;pointer-events:none;}
.radial-editor-r4 .radial-center .source-inline {transition:none;}

/* Avoid a pre-fit frame with stale M2 metrics on re-entry. */
.map-stage-r4:not([data-layout-ready]) {visibility:hidden;}

.source-inline { overflow:hidden; }
.idle-key {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;gap:5px;}
.idle-key .status-key {min-width:0;gap:4px;white-space:normal;font-size:11px;}
.idle-key .key-symbol {flex:0 0 18px;width:18px;}
.idle-key .monitor-key {flex-basis:26px;width:26px;}
.idle-key .monitor-key .symbol-geometry.pvm {width:26px;height:18px;}
.program-geometry svg path:first-child {fill:currentColor;fill-opacity:.08;}

/* M3.1: compact labels with translucent backing; anchors and hit targets unchanged. */
.world-marker .symbol-label {background:rgba(255,255,255,.42);box-shadow:none;font-weight:750;border-width:calc(var(--ink-stroke) * .65);padding:0 .10em;}
.world-marker.pvm .symbol-label,.world-marker.power .symbol-label,.world-marker.equipment .symbol-label {font-size:var(--label-size);line-height:1.1;}
.world-marker.pvm .source-inline {opacity:.82;}

/* Day 1 context-key visibility: keep the existing 76px grid row/viewport/Fit
   geometry. A taller phone key overlays upward, rather than resizing the Plan. */
.plan-key-rail.contextual-key{position:relative;overflow:visible;padding:0;display:block}
.contextual-key #workClaimControls{position:absolute;left:0;right:0;bottom:100%;z-index:2;display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:6px 8px;background:#fff;border:1px solid #cfd8d2;border-bottom:0;box-sizing:border-box}
.contextual-key #workClaimControls button{min-height:44px}
.contextual-key .key-actions-grid{position:absolute;left:0;right:0;bottom:0;z-index:1;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px;padding:6px 8px max(6px,env(safe-area-inset-bottom));background:#fff;border-top:1px solid #cfd8d2;box-sizing:border-box}
.contextual-key .plan-key-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;width:100%;min-height:48px;padding:4px 2px;font-size:11px;line-height:1.2;white-space:normal;touch-action:manipulation}
.contextual-key .plan-key-item .control-icon{width:23px;height:23px;flex-shrink:0}
@media(max-width:600px){.contextual-key .key-actions-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* R2.3: separate form chrome from radial hit areas. Toolbar and key stay fixed;
   the middle work area can scroll when the keyboard or a short screen needs room. */
.plan-shell-r4.has-radial-fields {grid-template-areas:"toolbar" "work" "key";grid-template-rows:64px minmax(0,1fr) 76px;}
.plan-shell-r4.has-radial-fields.has-manual-return {grid-template-areas:"return" "toolbar" "work" "key";grid-template-rows:40px 64px minmax(0,1fr) 76px;}
.plan-work-area {grid-area:work;display:grid;grid-template-areas:"map" "fields";grid-template-rows:minmax(288px,1fr) auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;}
.plan-work-area > .map-viewport-r4 {grid-area:map;}
.plan-selection-fields {grid-area:fields;display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:12px;padding:10px 12px;background:#f5f9ff;border-top:1px solid #b9cce4;isolation:isolate;}
.plan-selection-fields .radial-value {position:static;inset:auto;width:auto;min-width:0;display:grid;align-content:start;gap:5px;text-align:left;text-transform:none;font-size:12px;line-height:1.35;font-weight:750;color:#173e69;}
.plan-selection-fields .radial-value input {box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:9px 10px;font-size:16px;line-height:1.3;text-align:left;border:1px solid #8daacb;border-radius:8px;touch-action:manipulation;scroll-margin:12px;}
.plan-selection-fields .radial-value input:focus {outline:3px solid #0878e6;outline-offset:2px;}
.plan-selection-fields .radial-number-value input {text-align:center;}
.plan-selection-fields .radial-value input::placeholder {color:#5f7084;font-weight:400;}
@media(max-width:600px){
 .plan-shell-r4.has-radial-fields {grid-template-rows:64px minmax(0,1fr) 116px;}
 .plan-shell-r4.has-radial-fields.has-manual-return {grid-template-rows:40px 64px minmax(0,1fr) 116px;}
 .has-radial-fields .plan-key-rail {height:116px;min-height:116px;}
}
/* Distinct 44px+ action hit areas; destructive and move handles sit off the ring. */
.radial-delete-action {left:-42px;top:84px;min-width:44px;min-height:44px;}
.radial-move-handle {right:-42px;top:82px;bottom:auto;}
.radial-bottom-action {width:44px;height:44px;min-width:44px;min-height:44px;}
.radial-bottom-action.work {left:12px;bottom:-26px;}
.radial-bottom-action.manual {left:64px;bottom:-26px;}
.radial-bottom-action.issue {right:12px;bottom:-26px;}

/* R2.4: glance on the radial, type in the separate bottom editor. These two
   44px readout targets reuse the key icons and never overlap the outer actions. */
.camera-editor .radial-center {left:46px;top:46px;width:80px;height:80px;}
.radial-identifier {position:absolute;top:1px;width:80px;height:44px;min-height:44px;min-width:0;display:flex;align-items:center;gap:5px;padding:5px;border:1px solid #87afe0;border-radius:9px;background:#fff;color:#075cac;touch-action:manipulation;cursor:pointer;}
.radial-identifier-cable {left:2px;}
.radial-identifier-number {right:2px;}
.radial-identifier .control-icon {flex:0 0 16px;width:16px;height:20px;}
.radial-identifier-value {min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.25;font-weight:750;}
.radial-identifier:focus-visible {outline:2px solid #0878e6;outline-offset:2px;}
.radial-editor-r4.is-moving .radial-identifier {visibility:hidden;}
.radial-editor-r4.is-rotating .radial-identifier {opacity:.35;pointer-events:none;}
