#annyBodyControls .body-fields>label {display:grid;grid-template-columns:1fr auto;gap:12px;margin:24px 0;}
#annyBodyControls .body-fields input {grid-column:1/-1;width:100%;}
#annyBodyControls output {font-size:13px;color:#737d70;font-weight:500;}
#annyBodyControls label[hidden] {display:none;}
#annyBodyControls select {display:block;width:100%;margin-top:12px;}
.measure{margin:18px 0 4px;padding:15px 15px 11px;border:1px solid #e6e4de;border-radius:10px;background:#fbfbf8}
.measure-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.measure-head .eyebrow{margin:0;font-size:9px}
.measure-head strong{font-family:var(--font-display);font-size:19px;font-weight:600;letter-spacing:-.5px}
.measure-bar{position:relative;height:6px;border-radius:4px;background:#e8e7e1;margin:11px 0 9px;overflow:visible}
.measure-bar span{display:block;height:100%;border-radius:4px;background:#8a9480;transition:width .25s}
.measure-bar.over span{background:var(--orange)}
.measure-bar i{position:absolute;top:-4px;left:40%;width:1px;height:14px;background:#6d7268}
.measure-bar i:after{content:'40%';position:absolute;top:16px;left:-11px;font-size:8px;color:#8b908a;letter-spacing:.4px}
.measure p.small{margin:14px 0 0}
.measure details.compact{margin-top:6px}
.terrain-toggle{margin:4px 0 12px}
#terrainLegend{margin:0 0 20px}
.legend-bar{height:8px;border-radius:5px;background:linear-gradient(to right,#c4622a,#5f7f63)}
.legend-ends{display:flex;justify-content:space-between;gap:10px;margin-top:6px;font-size:9px;color:#8b908a;letter-spacing:.3px}
#terrainLegend p.small{margin-top:11px}
.legend-zones{display:flex;gap:4px}
.legend-zones .zone{flex:1;text-align:center;font-size:9px;letter-spacing:.4px;padding:7px 2px;border-radius:5px;color:#fff;font-weight:600}
.legend-zones .peak{background:#c0392b}
.legend-zones .valley{background:#4f8f45}
.legend-equator{margin-top:10px}
#positionZone{margin:2px 0 0}

/* Beta interface, 2026-09-21. The handgun menu, the sweet spot toggle and the
   concealment reading all live in the viewer now, so the customer can work
   without walking back through the panel. */
.stage-name{position:relative;pointer-events:auto}
.stage-gun{display:flex;align-items:center;gap:7px;border:0;background:none;padding:2px 0;font-size:16px;font-weight:500;letter-spacing:-.3px;max-width:360px;text-align:left}
.stage-gun:hover{background:none;color:#a4560f}
.stage-gun .caret{font-size:11px;color:#8b9187;transform:translateY(1px)}
.stage-gun[aria-expanded=true] .caret{color:#a4560f}
.gun-menu{position:absolute;top:calc(100% + 7px);left:0;width:262px;max-width:70vw;padding:7px;border:1px solid #dfe2dc;border-radius:10px;background:#fff;box-shadow:0 12px 34px #20291c26;z-index:9;pointer-events:auto}
.gun-menu input{width:100%;border:1px solid #dfe2dc;border-radius:6px;padding:9px 10px;font-size:12px;min-height:0}
.gun-menu ul{list-style:none;margin:6px 0 0;padding:0;max-height:244px;overflow:auto;scrollbar-width:thin}
.gun-menu li{padding:9px 10px;border-radius:5px;font-size:12px;line-height:1.35;cursor:pointer}
.gun-menu li span{display:block;font-size:9px;color:#878d86;margin-top:3px}
.gun-menu li:hover{background:#f0f2ec}
.gun-menu li[aria-selected=true]{background:#f6f2ea;font-weight:600}
.gun-menu li.empty{cursor:default;color:#8b908a}

.stage-terrain{position:absolute;top:92px;left:25px;z-index:3;width:212px;padding:11px 13px;border:1px solid #dfe1da;border-radius:10px;background:#ffffffd6;backdrop-filter:blur(12px);pointer-events:auto}
.stage-terrain .toggle{margin:0;gap:9px;justify-content:flex-start;font-size:11px;line-height:1.4}
.stage-terrain #terrainLegend{margin-top:11px;border-top:1px solid #e7e9e3;padding-top:10px}
.stage-terrain .small{margin:9px 0 0;font-size:10px;line-height:1.6}
.stage-terrain a{display:inline-block;margin-top:9px;font-size:10px;font-weight:600;color:#a4560f;text-decoration:none}
.stage-terrain a:hover{text-decoration:underline}

.stage-measure{position:absolute;right:22px;bottom:83px;z-index:3;width:216px;border:1px solid #dfe1da;border-radius:10px;background:#ffffffd6;backdrop-filter:blur(12px);margin:0;padding:0 13px;pointer-events:auto}
.stage-measure summary{padding:11px 0;gap:10px}
.stage-measure summary .eyebrow{margin:0;font-size:9px}
.stage-measure summary strong{margin-left:auto;font-family:var(--font-display);font-size:17px;font-weight:600;letter-spacing:-.5px}
.stage-measure summary:after{margin-left:8px;font-size:14px;color:#8c9585}
.stage-measure .measure-bar{margin:2px 0 9px}
.stage-measure .small{margin:13px 0 0;font-size:10px;line-height:1.6}
.stage-measure a{display:inline-block;margin:10px 0 12px;font-size:10px;font-weight:600;color:#a4560f;text-decoration:none}
.stage-measure a:hover{text-decoration:underline}

#termsAccept{border:0;width:100%;margin-top:24px}

@media(max-width:1050px){.stage-terrain{left:20px}.stage-measure{bottom:130px}}
@media(max-width:760px){
 /* Narrow enough that the two viewer panels never meet on a phone. */
 .stage-terrain{top:74px;left:17px;width:148px;padding:8px 10px}
 .stage-terrain .toggle{font-size:10px}
 .stage-terrain .small{display:none}
 .stage-measure{right:12px;bottom:120px;width:164px;padding:0 10px}
 .stage-measure .small{font-size:9px}
 .stage-measure summary strong{font-size:15px}
 .stage-gun{font-size:14px}
 .gun-menu{width:240px}
}
@media(max-width:1050px) and (max-height:500px) and (orientation:landscape){
 .stage-terrain{top:62px;left:14px;width:170px}
 .stage-measure{bottom:96px;right:12px;width:170px}
}

/* The loading note moves to the right, because the sweet spot control now
   occupies the left of the viewer. */
.stage-loading{left:auto;right:25px;top:92px}
@media(max-width:1050px){.stage-loading{right:20px}}
@media(max-width:760px){.stage-loading{left:auto;right:17px;top:74px}}
@media(max-width:1050px) and (max-height:500px) and (orientation:landscape){.stage-loading{top:62px;right:14px}}

/* The handgun menu lives inside .stage-top, which is its own stacking context.
   The menu's own z-index cannot escape it, so the row has to outrank the
   sweet spot panel or the menu opens behind it. */
.stage-top{z-index:8}

/* Touch devices do not need the camera instructions. Jon, 2026-09-22: it is
   intuitive with fingers, and on a phone or a tablet the line ran under the
   Concealment reading. The pointer query catches tablets too, which the width
   query alone would miss. `#hint` still carries the touch wording in
   branded-app.js, for anything that shows it again. */
@media(pointer:coarse){.camera-help{display:none}}
/* And below 1050 px with a mouse, where the line runs under the reading too.
   style.css hid it at this width originally, through `.view-meta #hint`. That
   rule stopped biting when the hint moved out of `.view-meta`. */
@media(max-width:1050px){.camera-help{display:none}}
/* The disclosure marker must never sit outside the box on a narrow screen. */
.stage-measure summary{min-width:0}
.stage-measure summary .eyebrow{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stage-measure summary:after{flex:0 0 auto}
/* Sized to fit the whole word. The ellipsis above is a backstop, not the plan. */
@media(max-width:760px){.stage-measure summary .eyebrow{letter-spacing:.7px;font-size:8.5px}}

/* The view presets go on touch as well. Jon, 2026-09-22. A finger reaches every
   orientation by dragging, so the bar was clutter on a phone. The reset button
   in the top corner still returns to the three-quarter view.
   Known cost, and Jon's call: the Top cut-away and the Mannequin view are not
   reachable on touch, because dragging overhead does not clip the body. */
@media(pointer:coarse){.camera{display:none}}

/* 2026-09-23 Light Bearing add-to-cart picker */
.lb-dialog{max-width:420px;width:calc(100% - 32px);border:0;border-radius:10px;padding:22px}
.lb-dialog h2{margin:0 0 8px;font-size:18px}.lb-dialog label{display:block;margin:12px 0;font-weight:600}
.lb-dialog select{display:block;width:100%;margin-top:6px;padding:10px;font:inherit}
.lb-error{color:#b3261e;min-height:1.2em;margin:4px 0}.lb-actions{display:flex;gap:10px;justify-content:flex-end}
.lb-actions button{padding:10px 16px;font:inherit;cursor:pointer}
/* 2026-09-23 feedback button + form */
.below{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.fb-open{padding:8px 14px;border:1px solid #cfc5b8;border-radius:6px;background:#fff;font:inherit;font-size:13px;cursor:pointer}
.fb-dialog{max-width:480px}.fb-dialog textarea,.fb-dialog input[type=email]{display:block;width:100%;box-sizing:border-box;margin-top:6px;padding:10px;font:inherit;font-weight:400}
.fb-rating{border:0;padding:0;margin:12px 0}.fb-rating legend{font-weight:600;margin-bottom:6px}
.fb-rating label{display:inline-flex;align-items:center;gap:6px;margin:0 14px 0 0;font-weight:400}
.fb-note{font-size:13px;color:#6e655c}.fb-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
