.wrap { position: absolute; left: 0; top: 0; width:100vw; height:100vh; padding-top:calc(112px + 240rpx); box-sizing:border-box; background: #000; overflow-y: auto; overflow-x:hidden; } .cam { position: fixed; left: 0; top: 0; width: 100%; height: 100%; } .diag-toolbar { position: fixed; z-index: 20; left: 0; top: 112px; width: 100%; box-sizing: border-box; padding: 12rpx 24rpx; background: #ffe56c; color: #211800; box-shadow: 0 6rpx 18rpx rgba(0,0,0,.4); } .toolbar-version { font-size: 11px; line-height: 1.5; margin-bottom: 8rpx; } .native-probe-entry { margin:0 0 12rpx; padding:0 12rpx; height:72rpx; line-height:68rpx; background:#126597; color:#fff; font-size:14px; font-weight:700; } .toolbar-actions { display:flex; } .copy-diagnostics, .export-photo { flex:1; width:0; height:72rpx; line-height:68rpx; box-sizing:border-box; margin:0; padding:0 8rpx; background:#ffda00; color:#211800; border:2rpx solid #705500; font-size:14px; font-weight:700; } .export-photo { margin-left:12rpx; background:#fff7d3; } .export-photo[disabled] { background:#ece3ac; color:#817c61; border-color:#b6ac78; } .copy-status { margin-top: 8rpx; font-size: 11px; line-height: 1.5; } .copy-fallback { margin-top: 8rpx; padding: 12rpx; background: #fffbe9; border-radius: 8rpx; } .copy-help { margin-bottom: 8rpx; font-size: 10px; line-height: 1.5; } .copy-text-scroll { height: 240rpx; } .copy-text { font-size: 11px; line-height: 1.6; white-space: pre-wrap; word-break: break-all; user-select: text; } .probe { position: relative; z-index: 2; width:702rpx; max-width:calc(100vw - 48rpx); box-sizing:border-box; margin: 24rpx; padding: 24rpx; border-radius: 12rpx; background: rgba(0, 0, 0, .76); color: #fff; } .title { font-size: 18px; font-weight: 600; margin-bottom: 16rpx; } .version { font-size: 12px; color: #f5f078; margin-top: 8rpx; } .diagnostics { font-size: 10px; line-height: 1.6; margin-top: 12rpx; color: #c7e0f5; word-break: break-all; } .diagnostics text { white-space: pre-wrap; } .note { font-size: 11px; line-height: 1.6; color: #ddd; margin-top: 12rpx; word-break: break-all; } .facing { margin-top: 16rpx; color: #f5f078; font-size: 13px; line-height: 1.6; } .actions { display: flex; flex-wrap: wrap; margin: 20rpx 0; } .actions button { font-size: 12px; margin: 0 12rpx 12rpx 0; padding: 0 16rpx; max-width:100%; } .calibration { margin: 16rpx 0; padding: 12rpx; border: 1rpx solid #777; border-radius: 8rpx; } .calibration-optional { margin-top: 12rpx; padding: 0 12rpx; font-size: 11px; } .calibration-confirmed { margin-top: 12rpx; font-size: 12px; line-height: 1.6; color: #bceaa7; } .calibration-grid { display: flex; flex-wrap: wrap; margin-top: 16rpx; } .calibration-card { width: calc(50% - 12rpx); margin: 0 12rpx 16rpx 0; box-sizing: border-box; background: #161616; } .calibration-format { padding: 8rpx; font-size: 12px; text-align: center; color: #f5f078; } .calibration-image { width: 100%; height: 320rpx; background: #222; } .calibration-card button { padding: 0 6rpx; margin: 8rpx 0 0; font-size: 11px; } .targets { display: flex; flex-wrap: wrap; } .target { margin: 0 12rpx 12rpx 0; padding: 12rpx; font-size: 11px; border: 1rpx solid #777; border-radius: 8rpx; } .target.active { border-color: #f5f078; color: #f5f078; } .status { font-size: 14px; line-height: 1.6; } .error { margin-top: 16rpx; padding: 12rpx; border: 1rpx solid #e79384; color: #ffd1c7; font-size: 11px; line-height: 1.6; word-break: break-all; } .fields { max-height: 240rpx; margin-top: 16rpx; } .fields text { font-size: 10px; line-height: 1.6; white-space: pre-wrap; color: #c7e0f5; } .snapshot { margin-top: 20rpx; width: 100%; height: 440rpx; background: #111; } .compress-canvas { position: fixed; left: -10000px; top: -10000px; pointer-events: none; }