/* Floor/room positioning follows the existing app theme. */
#app.positioning-active { max-width: 1800px; margin-top:1.25rem; }
.positioning-page h1 { margin: 4px 0; font-size: 1.65rem; }
.positioning-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px; }
.positioning-heading > div { min-width:0; }
.positioning-heading > button { background:#22332f; border-color:#42675d; color:#c5eee2; }
.positioning-scope { display:flex; gap:12px; margin-bottom:10px; }
.positioning-scope .form-group { flex:1; min-width:0; margin:0; }
.positioning-scope select { width:100%; text-overflow:ellipsis; }
.positioning-filter-panel { margin-bottom:18px; border:1px solid #364349; border-radius:10px; background:#1b2327; }
.positioning-filter-panel > summary { display:flex; align-items:center; gap:12px; padding:10px 14px; cursor:pointer; list-style:none; color:#e4f3ee; font-weight:600; }
.positioning-filter-panel > summary::-webkit-details-marker { display:none; }
.positioning-filter-panel > summary::before { content:'›'; color:#8bdcc7; font-size:18px; line-height:1; }
.positioning-filter-panel[open] > summary::before { transform:rotate(90deg); }
.positioning-filter-summary { margin-left:auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#b6c9c3; font-size:12px; font-weight:400; }
.positioning-filters { display:flex; align-items:end; gap:14px; flex-wrap:wrap; padding:0 14px 14px; }
.positioning-filters .form-group { margin:0; flex:1 1 170px; }
.positioning-filters select, .positioning-filters input { width:100%; }
.positioning-filters > button { margin-bottom:1px; }
.positioning-frame-notice:not(:empty) { margin:10px 0; padding:8px 12px; border-left:2px solid #dfa855; background:#46351c33; border-radius:0 6px 6px 0; font-size:12px; }
/* Reserve the inspector column so picks never resize the map or WebGL canvas. */
.positioning-workspace { display:grid; grid-template-columns:minmax(200px,230px) minmax(280px,1fr) minmax(280px,320px); gap:16px; align-items:start; }
.positioning-spatial { min-width:0; }
.positioning-page summary:focus-visible, .positioning-page select:focus-visible { outline:2px solid #83e6d0; outline-offset:3px; }
.positioning-cloud-navigation { display:flex; gap:8px; flex-wrap:wrap; }
.positioning-cloud-options { margin:0 0 10px; border:1px solid #364349; border-radius:8px; background:#1b2327; }
.positioning-cloud-options > summary, .positioning-help > summary { padding:8px 10px; cursor:pointer; color:#b6c9c3; font-size:12px; }
.positioning-cloud-options > div { padding:0 10px; }
.positioning-cloud-navigation[hidden], .positioning-cloud-options[hidden], .positioning-panorama-status[hidden] { display:none; }
.positioning-panorama-status { margin-top:8px; font-size:12px; }
.positioning-help { margin-top:8px; border-top:1px solid #293844; }
.positioning-help .positioning-hint { padding:0 10px 10px; }
.positioning-sidebar { min-width:0; }
.positioning-sidebar > button { margin:10px 0 14px; font-size:12px; }
.positioning-notes { margin:12px 0; padding:12px; border:1px solid #31574f; border-radius:8px; background:#192a27; }
.positioning-notes h3 { margin:0 0 4px; font-size:14px; }
.positioning-note-row { display:flex; gap:6px; margin-top:8px; }
.positioning-note-row button:first-child { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:left; background:#26473e; border-color:#3c7869; }
.positioning-note-row button[aria-pressed=true] { color:#132922; background:#85dbc3; border-color:#a2f1d9; font-weight:650; }
.positioning-note-row button:last-child:not(:first-child) { flex:none; background:#263239; border-color:#4a5a60; }
.positioning-note-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:16px; }
.positioning-note-actions button { margin:0; }
.positioning-overview { border:1px solid var(--border); border-radius:8px; padding:12px; background:var(--bg-2); }
.positioning-overview h3 { font-size:14px; margin:0 0 8px; }
.po-tools { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:8px; }
.po-tools button { padding:4px 8px; font-size:11px; }
.positioning-overview-svg { width:100%; height:240px; display:block; background:#0b1219; border:1px solid #293844; border-radius:4px; touch-action:none; }
.positioning-overview-svg:focus-visible { outline:2px solid var(--accent); }
.po-map { position:relative; }
.po-axis, .po-scale { position:absolute; pointer-events:none; color:#dcebe5; background:#0b1219d9; border-radius:4px; font-size:11px; }
.po-axis { top:8px; right:8px; padding:3px 6px; }
.po-scale { left:8px; bottom:8px; display:flex; align-items:end; gap:6px; padding:4px 6px; }
.po-scale-bar { display:block; height:6px; border:1px solid #dcebe5; border-top:0; margin-bottom:4px; }
.po-current-scan { margin-top:8px; font-size:12px; color:#83e6d0; }
.po-current-scan[hidden] { display:none; }
.po-help { margin-top:8px; font-size:11px; color:var(--fg-2); }
.po-help summary { cursor:pointer; padding:4px 0; }
.po-dialog { width:min(1080px,calc(100vw - 24px)); height:calc(100dvh - 32px); max-width:none; max-height:none; margin:auto; padding:0; border:1px solid #52796e; border-radius:12px; color:var(--fg); background:var(--bg-2); }
.po-dialog::backdrop { background:#000a; }
.po-dialog .positioning-overview { display:flex; flex-direction:column; height:100%; overflow:auto; border:0; padding:16px; }
.po-dialog .po-map { flex:1 0 200px; min-height:200px; }
.po-dialog .positioning-overview-svg { height:100%; position:absolute; inset:0; }
.po-dialog .po-tools button { min-height:36px; padding:6px 12px; font-size:12px; }
.po-dialog .po-tools button:last-child { margin-left:auto; background:#26483e; border-color:#477c69; }
.po-dialog .po-tools, .po-dialog h3, .po-dialog p, .po-dialog details { flex-shrink:0; }
.po-scan[aria-pressed=true] { fill:#73e4c4; }
.po-dense-points, .po-selected-layer { position:absolute; inset:1px; width:calc(100% - 2px); height:calc(100% - 2px); pointer-events:none; }
.po-dense-points[hidden], .po-dense-note[hidden] { display:none; }
.po-selected-layer .po-item { pointer-events:auto; }
.po-dense-note { font-size:11px; line-height:1.5; color:var(--fg-2); }
.po-room { cursor:pointer; }
.po-room polygon, .po-room path { fill:#53bfa21f; stroke:#64cfaf; stroke-width:1.5; }
.po-room text { fill:#ddeeea; stroke:#0b1219; stroke-width:2; paint-order:stroke; stroke-linejoin:round; }
.po-room.po-suggested polygon { fill:#e8b65b12; stroke:#e8b65b; stroke-dasharray:5 3; }
.po-room.po-segmentation path { fill:none; stroke:#9baab8; stroke-dasharray:2 2; }
.po-room.po-selected polygon, .po-room:focus polygon { fill:#56bfff30; stroke:#72c7ff; stroke-width:3; }
.po-room:focus { outline:none; }
.po-room:focus text { fill:#72c7ff; }
.po-scan { fill:#dfe5ec; stroke:#142330; stroke-width:1; cursor:pointer; }
.po-scan.po-panorama { fill:#c69cff; }
.po-scan.po-photo { fill:#8494a7; }
.po-scan.po-selected-scan { fill:#ffbf69; stroke:#fff; stroke-width:2; }
.po-item { fill:#64c5ff; stroke:#0b1219; stroke-width:1; cursor:pointer; }
.po-item.po-selected { fill:#ffbf69; stroke:#ffe0a7; stroke-width:2; }
.po-scan:focus, .po-item:focus { outline:none; stroke:white; stroke-width:3; }
.po-background { opacity:.65; pointer-events:none; }
.po-note, .po-summary, .po-legend { font-size:11px; line-height:1.5; margin-top:8px; }
.po-legend { color:var(--fg-2); }
.positioning-height-tools { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin:0 0 10px; }
.positioning-height-tools .form-group { margin:0; flex:none; }
.positioning-height-tools label { display:flex; gap:8px; align-items:center; font-size:11px; }
.positioning-height-tools input { width:95px; padding:5px; }
.positioning-height-tools button { font-size:11px; padding:6px 8px; }
.positioning-height-tools .meta { font-size:11px; }
.positioning-list { background:var(--bg-2); border:1px solid var(--border); border-radius:8px; overflow:hidden; }
.positioning-count { padding:16px; border-bottom:1px solid var(--border); font-weight:600; }
.positioning-table-scroll { max-height:650px; overflow:auto; }
.positioning-list .tbl { width:100%; }
.positioning-list th { position:sticky; top:0; background:var(--bg-2); z-index:1; }
.positioning-list th button { background:transparent; color:var(--fg-2); border:0; padding:4px 0; font-size:inherit; }
.positioning-list th[aria-sort=ascending] button::after { content:' ↑'; }
.positioning-list th[aria-sort=descending] button::after { content:' ↓'; }
.positioning-list td { vertical-align:top; padding:10px; overflow-wrap:anywhere; }
.positioning-list td button { background:transparent; border:0; padding:0; text-align:left; color:var(--accent); }
.positioning-list small { display:block; font-size:11px; margin-top:4px; }
.positioning-list .positioning-selected { background:#343024; box-shadow:inset 3px 0 #ffbf69; }
.positioning-list .positioning-selected td button { color:#ffcf90; }
.positioning-pager { display:flex; gap:8px; align-items:center; justify-content:space-between; padding:12px; border-top:1px solid var(--border); }
.positioning-pager button { font-size:12px; padding:6px 9px; }
.positioning-view-tools { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:10px; }
.positioning-view-tools button { padding:7px 10px; font-size:12px; }
.positioning-view-tools label { display:flex; gap:6px; align-items:center; font-size:12px; color:var(--fg-2); }
.positioning-stage { position:relative; height:clamp(390px,59vh,740px); background:#0b1219; border:1px solid #293844; border-radius:8px; overflow:hidden; }
.positioning-stage canvas { display:block; width:100%; height:100%; touch-action:none; }
.positioning-stage canvas:focus-visible { outline:2px solid var(--accent); outline-offset:-4px; }
.positioning-source-dialog { width:min(1500px,calc(100vw - 28px)); max-width:none; max-height:calc(100dvh - 32px); margin:auto; padding:20px; border:1px solid #52796e; border-radius:12px; color:var(--fg); background:var(--bg-2); overflow:auto; }
.positioning-source-dialog::backdrop { background:#000b; }
.positioning-source-dialog header { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.positioning-source-dialog h2 { margin:0; font-size:1.35rem; }
.positioning-source-dialog header button { flex:none; }
.psv-notice { padding:10px 12px; border-left:2px solid #dfa855; background:#46351c33; font-size:13px; }
.psv-pair { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-top:16px; }
.psv-pane { min-width:0; }
.psv-pane h3 { margin:0 0 8px; font-size:16px; }
.psv-pane > select { width:100%; }
.psv-source-label { color:#d8ece5; font-weight:600; overflow-wrap:anywhere; }
.psv-tools { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin:10px 0; font-size:12px; }
.psv-tools label { display:flex; gap:6px; align-items:center; }
.psv-tools label[hidden] { display:none; }
.psv-image-frame { overflow:auto; max-height:62vh; background:#0b1219; border:1px solid #293844; border-radius:6px; }
.psv-raster { position:relative; width:100%; }
.psv-raster canvas { display:block; width:100%; height:auto; }
.psv-raster .psv-outline { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.psv-raster .psv-outline[hidden] { display:none; }
.psv-status { font-size:12px; color:var(--fg-2); overflow-wrap:anywhere; }
.positioning-source-dialog[data-enlarged] .psv-pair { grid-template-columns:1fr; }
.positioning-source-dialog[data-enlarged=A] .psv-pane[data-pane=B], .positioning-source-dialog[data-enlarged=B] .psv-pane[data-pane=A] { display:none; }
@media(max-width:720px) {
  .positioning-source-dialog { padding:12px; width:calc(100vw - 12px); }
  .positioning-source-dialog header { align-items:start; }
  .positioning-source-dialog h2 { font-size:1.1rem; }
  .psv-pair { grid-template-columns:1fr; }
}
.positioning-cloud-status { margin-top:10px; font-size:12px; }
.positioning-hint { margin-top:4px; font-size:12px; }
.positioning-detail { grid-column:3; margin:0; padding:14px; border:1px solid var(--border); border-radius:8px; background:var(--bg-2); max-height:calc(100vh - 240px); min-height:440px; overflow:auto; }
.positioning-detail p { margin:6px 0; }
.positioning-detail button { margin:8px 8px 0 0; }
.positioning-webgl-error { padding:24px; color:var(--fg-2); }
.positioning-evidence { background:var(--bg-2); border:1px solid var(--border); border-radius:8px; margin-top:18px; padding:18px; }
.pe-title { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.pe-title button { margin:0; }
.pe-selectors { display:flex; align-items:end; flex-wrap:wrap; gap:10px; margin:16px 0 10px; }
.pe-selectors .form-group { margin:0; flex:1; min-width:200px; }
.pe-selectors select { width:100%; text-overflow:ellipsis; }
.pe-selectors button { margin:0; }
.pe-member { border-left:2px solid #cf88dc; padding-left:12px; }
.pe-evidence-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:18px; margin:16px 0; align-items:start; }
.pe-media { min-width:0; }
.pe-media canvas, .pe-media img { display:block; max-width:100%; height:auto; border-radius:5px; background:#101923; }
.pe-media figure { margin:0 0 12px; }
.pe-media figcaption, .pe-mask-status { font-size:12px; color:var(--fg-2); margin:6px 0; }
.pe-media select { max-width:100%; }
.pe-claims h4, .pe-reviews h4 { margin:10px 0; }
.pe-claims h4:first-child { margin-top:0; }
.pe-raw { margin:10px 0; font-size:12px; }
.pe-raw summary { color:var(--fg-2); cursor:pointer; }
.pe-raw pre { white-space:pre-wrap; overflow-wrap:anywhere; max-height:300px; overflow:auto; padding:10px; background:var(--bg); border:1px solid var(--border); border-radius:4px; }
.pe-review-group { margin-top:12px; padding-top:10px; border-top:1px solid var(--border); }
.pe-review-event { margin:10px 0; padding:10px; border-left:2px solid var(--border); overflow-wrap:anywhere; }
.pe-review-event.pe-current { border-left-color:#61c6a6; background:#16312e55; }
.positioning-evidence button[hidden] { display:none; }
.positioning-inspecting .positioning-evidence { border:0; border-radius:0; padding:14px 0 0; border-top:1px solid var(--border); }
.positioning-inspecting .pe-evidence-grid { grid-template-columns:1fr; }
@media(max-width:1100px) {
  .positioning-workspace { grid-template-columns:minmax(240px,300px) minmax(0,1fr); }
  .positioning-detail { grid-column:2; max-height:none; min-height:130px; }
}
@media(max-width:720px) {
  #app.positioning-active { padding:0 14px; margin-top:16px; }
  .positioning-heading { margin-bottom:12px; gap:8px; }
  .positioning-heading .meta { font-size:12px; }
  .positioning-heading > button { padding:6px 8px; font-size:12px; }
  .positioning-scope { gap:8px; }
  .positioning-scope .form-group:first-child { flex:1.5; }
  .positioning-filter-panel { margin-bottom:12px; }
  .positioning-filters .form-group { flex-basis:120px; min-width:0; }
  .positioning-workspace { grid-template-columns:1fr; }
  .positioning-spatial { grid-row:1; }
  .positioning-detail { grid-column:1; grid-row:2; }
  .positioning-stage { height:clamp(340px,60svh,560px); }
  .positioning-table-scroll { max-height:380px; }
  .pe-evidence-grid { grid-template-columns:1fr; }
}

.positioning-panorama-tools { display:flex; gap:10px; align-items:end; margin-bottom:10px; }
.positioning-panorama-tools .form-group { margin:0; flex:1; min-width:0; }
.positioning-panorama-tools select { width:100%; }
.positioning-panorama-tools > button { background:#51bea4; border-color:#51bea4; color:#102521; font-weight:650; }
.positioning-panorama-tools > button:hover { background:#74d9c0; border-color:#74d9c0; }
.positioning-panorama-tools[hidden] { display:none; }
.positioning-panorama-tools p { flex:1; min-width:220px; margin:0; }
.positioning-view-tools .form-group { margin:0; }
.positioning-representations { border:1px solid #657b79; border-radius:6px; padding:10px 12px; margin-bottom:12px; background:#18312b33; }
.positioning-representations[hidden] { display:none; }
.positioning-representation-controls { display:flex; align-items:center; flex-wrap:wrap; gap:12px; }
.positioning-representation-controls .form-group { margin:0; }
.positioning-representations p { margin:8px 0 0; }
.positioning-detail .tbl { font-size:11px; table-layout:fixed; width:100%; overflow-wrap:anywhere; }
.positioning-detail details p { overflow-wrap:anywhere; }
.positioning-detail .tbl small { display:block; margin-top:4px; }
.positioning-detail details pre { white-space:pre-wrap; overflow-wrap:anywhere; font-size:11px; }

.positioning-publication { margin: 0 0 16px; padding: 12px; border: 1px solid #53686d; border-radius: 8px; background: #182323; }
.positioning-publication[hidden] { display: none; }
.positioning-publication select { max-width: 100%; min-width: 260px; }
.positioning-review-action { padding: 10px 0; border-top: 1px solid #354348; }
.positioning-review-action p { margin: 6px 0; }
.positioning-representations select { max-width: 100%; }

.positioning-inline-review { margin-top: 20px; padding-top: 12px; border-top: 2px solid #5ba49a; }
.positioning-review-media { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.positioning-review-media figure { margin: 0; min-width: 0; }
.positioning-review-media img { display: block; width: 100%; max-height: 230px; object-fit: contain; background: #20262a; }
.positioning-review-media figcaption { font-size: 12px; overflow-wrap: anywhere; }
.positioning-review-buttons { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0; }
.positioning-review-status { background: #1d3431; padding: 10px; border-radius: 6px; }
.positioning-review-body textarea, .positioning-review-body select { width: 100%; }
.positioning-review-body details { margin: 14px 0; }

/* Whole-delivery review progress and capture follow-up. */
.room-completion { border:1px solid var(--border,#cbd5e1); border-radius:12px; padding:1rem; margin:1rem 0; }
.room-review-metrics { display:grid; grid-template-columns:repeat(auto-fit,minmax(145px,1fr)); gap:.65rem; margin:.8rem 0; }
.room-review-metrics>div { border:1px solid var(--border,#cbd5e1); border-radius:8px; padding:.7rem; display:flex; flex-direction:column; gap:.35rem; }
.room-review-metrics strong { font-size:1.4rem; }
.room-review-metrics span { font-size:.85rem; }
.room-completion li { margin:.55rem 0; }
.room-completion details { margin-top:1rem; }
.room-completion details>button { margin:.5rem; }
.room-snapshot-summary { max-height:360px; overflow:auto; white-space:pre-wrap; font-size:.8rem; }
.room-capture-card { padding:.8rem; border:1px solid var(--border,#cbd5e1); border-radius:8px; margin:1rem 0; }
.room-capture-card img { max-width:100%; max-height:400px; object-fit:contain; }
.positioning-review-body textarea { width:100%; box-sizing:border-box; }
.room-review-sample { padding:.8rem 0; }
.room-review-sample button { margin:.25rem .5rem .25rem 0; }

.positioning-furniture { margin:16px 0; padding-top:12px; border-top:2px solid #5ba49a; }
.positioning-furniture h4 { margin:0 0 8px; }
.positioning-furniture-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.positioning-furniture .form-group { margin:8px 0; min-width:0; }
.positioning-furniture input, .positioning-furniture select, .positioning-furniture textarea { box-sizing:border-box; width:100%; min-width:0; }
.positioning-furniture-actions { display:flex; flex-wrap:wrap; gap:8px; }
.positioning-furniture-actions button { margin:0; }
.positioning-furniture-status { font-size:12px; overflow-wrap:anywhere; }
.positioning-furniture[data-dirty=true] { border-color:#ffbf69; }
@media(max-width:720px) { .positioning-furniture-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }

.positioning-room-evidence { margin-top:12px; padding-top:12px; border-top:1px solid var(--border); }
.positioning-room-evidence[hidden] { display:none; }
.positioning-room-evidence h3 { margin:0 0 12px; font-size:16px; }
.positioning-room-evidence-metrics { display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:8px; }
.positioning-room-evidence-metrics > div { display:flex; flex-direction:column; gap:6px; border:1px solid var(--border); border-radius:6px; padding:10px; }
.positioning-room-evidence-metrics strong { font-size:22px; }
.positioning-room-evidence-metrics span { font-size:12px; }
.positioning-room-evidence details { margin:12px 0 0; }
.positioning-room-evidence summary { cursor:pointer; }
.positioning-room-candidate, .positioning-room-source-record { padding:10px 0; border-bottom:1px solid var(--border); overflow-wrap:anywhere; }
.positioning-room-candidate p { margin:6px 0; }
.positioning-room-candidate-views, .positioning-room-evidence-pager { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:8px 0; }
.positioning-room-candidate-views button { font-size:12px; }

/* Keep review queues beside the scan instead of expanding the page header. */
.positioning-source-review-mode .positioning-publication:not([hidden]) { display:flex; flex-wrap:wrap; align-items:end; gap:10px; margin:12px 0; }
.positioning-source-review-mode .positioning-publication > .form-group { flex:1 1 200px; margin:0; min-width:0; }
.positioning-source-review-mode .positioning-publication > details { flex-basis:100%; margin:0; font-size:12px; }
.positioning-source-review-mode .positioning-publication > details p { margin:8px 0; }
.positioning-source-review-mode .positioning-publication select { width:100%; min-width:0; }
.positioning-source-review-mode .positioning-sidebar { position:sticky; top:12px; max-height:calc(100dvh - 24px); overflow:auto; }
.positioning-source-review-mode .positioning-room-evidence { margin:0 0 12px; border:1px solid var(--border); border-radius:8px; padding:12px; max-height:62dvh; overflow:auto; }
.positioning-room-evidence-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
.positioning-room-candidate .prc-reason { margin:6px 0; font-size:12px; }
.positioning-room-candidate .prc-status { font-size:11px; color:var(--fg-2); }
.positioning-room-candidate-views > details { flex-basis:100%; }
.positioning-room-candidate-views > details button { display:block; width:100%; margin:6px 0; text-align:left; }
.positioning-source-queue-tools { display:grid; gap:8px; margin:12px 0; }
.positioning-source-queue-tools input,.positioning-source-queue-tools select { width:100%; box-sizing:border-box; min-width:0; }
.positioning-source-queue-progress { font-size:12px; line-height:1.5; }
.positioning-room-candidate[data-selected=true] { border-color:#e1b661; box-shadow:inset 3px 0 #e1b661; }
.positioning-source-dialog { box-sizing:border-box; }
.positioning-source-dialog > header { position:sticky; top:-20px; z-index:3; padding:10px 0; background:var(--bg-2); }
.psv-context { margin:8px 0; font-size:12px; }
.psv-context p { max-height:140px; overflow:auto; }
.psv-pair-note { margin:8px 0; font-size:12px; }
.psv-image-frame { height:min(62dvh,640px); max-height:none; }
.psv-image-frame:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.psv-raster { margin-inline:auto; }
.psv-raster canvas { max-width:none; }
.psv-help { font-size:11px; margin:6px 0; }
.psv-mobile-switch { display:none; }
.psv-decisions { border-top:1px solid var(--border); margin-top:14px; padding-top:12px; }
.psd-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.psd-fields input,.psd-fields select,.psd-fields textarea { box-sizing:border-box; width:100%; min-width:0; }
.psd-fields textarea,.psd-classification { grid-column:1/-1; }
.psd-fields label { display:flex; flex-direction:column; gap:5px; font-size:12px; }
.psd-fields .psd-reason { grid-column:1/-1; }
.psd-classification { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.psd-classification[hidden],.psd-writer[hidden],.psd-fields [hidden] { display:none; }
.psd-actions { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0; }
.psd-status,.psd-effect { font-size:12px; line-height:1.5; }
.psd-saved { padding:8px 10px; border-left:2px solid #61c6a6; margin:8px 0; background:#16312e55; }
.psd-saved button { margin:0 8px 0 0; font-size:12px; }
.psv-decisions[data-decision-state=draft] .psd-status { color:#ffcf90; }
.psv-decisions[data-decision-state=unknown] .psd-status,.psv-decisions[data-decision-state=conflict] .psd-status { color:#ffbca3; }
@media(max-width:720px) {
  .positioning-source-review-mode .positioning-sidebar { position:static; max-height:none; overflow:visible; }
  .positioning-source-review-mode .positioning-room-evidence { max-height:45dvh; }
  .positioning-source-dialog > header { top:-12px; }
  .positioning-source-dialog header button { min-height:44px; }
  .psv-mobile-switch { display:flex; gap:8px; position:sticky; top:50px; z-index:2; padding:8px 0; background:var(--bg-2); }
  .psv-mobile-switch button { flex:1; min-height:44px; }
  .psv-mobile-switch button[aria-pressed=true] { background:#386e60; border-color:#83e6d0; }
  .positioning-source-dialog[data-active-pane=A] .psv-pane[data-pane=B],.positioning-source-dialog[data-active-pane=B] .psv-pane[data-pane=A] { display:none; }
  .psv-pair { grid-template-columns:1fr; gap:0; }
  .psv-image-frame { height:clamp(220px,calc(100dvh - 340px),540px); }
  .psv-tools button,.psv-tools select,.psd-actions button,.positioning-room-candidate-views button { min-height:44px; }
  .psd-fields,.psd-classification { grid-template-columns:1fr; }
}
