/* 720 全景查看器共享外观样式：正式访问页 / 预览页 / 导出离线包三方共用本文件，保证渲染效果完全一致 */
.vp-view { position: fixed; inset: 0; background: #000; }
.vp-container { position: absolute; inset: 0; }
.vp-container #panoContainer { width: 100%; height: 100%; }
/* C 族屏幕叠加层：DOM 覆盖在全景之上（位于 UI 控件之下），pointer-events 关闭以免拦截拖拽 */
.vp-fxlayer { position: absolute; inset: 0; z-index: 3; pointer-events: none; overflow: hidden; }
.vp-fximg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: fill; display: block; }
/* 场景动态特效层：球面锚定的画面装饰（水花/气雾/云朵），位于屏幕叠加(3)之上、文本(5)之下；pointer-events 关闭以免拦截拖拽 */
.vp-scenefxlayer { position: absolute; inset: 0; z-index: 4; pointer-events: none; overflow: hidden; }
.vp-scenefx { position: absolute; left: 0; top: 0; height: auto; display: block; transform: translate(-50%,-50%);
  -webkit-user-select: none; user-select: none; will-change: left, top, width, transform; }
/* 文本浮层：以 HTML 层渲染场景/全局文本面板（替代 krpano type=text，背景盒与边框同元素不再错位）；
   位于叠加特效(z-index 3)之上、工具栏(6)/顶栏(10)之下；pointer-events 关闭以免拦截全景拖拽 */
.vp-txtlayer { position: absolute; inset: 0; z-index: 5; pointer-events: none; overflow: hidden; }
.vp-txt { position: absolute; max-width: 80%; white-space: pre-wrap; word-break: break-word; line-height: 1.5;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Microsoft YaHei', sans-serif; }
/* 自动滚动：外层裁切(overflow 由内联样式设置)，内层承载位移；纵向内层为块级以测完整文字高度，横向内层不换行 */
.vp-txt-inner { display: block; }
.vp-txt-nowrap { display: inline-block; white-space: nowrap; }
/* 半透明渐变标题栏（鼠标静止 3.5s 自动隐藏） */
.vp-topbar { position: absolute; top: 0; left: 0; right: 0; height: 56px; display: flex; align-items: center;
    justify-content: space-between; padding: 0 24px; color: #fff; z-index: 10;
    background: linear-gradient(180deg, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0) 100%);
    transition: opacity 0.4s, transform 0.4s; }
.vp-topbar.hide { opacity: 0; transform: translateY(-8px); pointer-events: none; }
.vp-topbar-left { display: flex; align-items: center; gap: 12px; min-width: 0; }
.vp-topbar-right { display: flex; align-items: center; gap: 8px; }
.vp-back { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; flex-shrink: 0;
    border-radius: 50%; color: #fff; background: rgba(255,255,255,0.14); border: 1px solid rgba(255,255,255,0.25);
    backdrop-filter: blur(8px); cursor: pointer; transition: all 0.2s; }
.vp-back:hover { background: rgba(255,255,255,0.26); border-color: rgba(255,255,255,0.5); }
.vp-back svg { width: 16px; height: 16px; }
.vp-title { font-weight: 600; font-size: 16px; text-shadow: 0 1px 4px rgba(0,0,0,0.5);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 56vw; }
.vp-author { font-size: 12px; opacity: 0.65; text-shadow: 0 1px 4px rgba(0,0,0,0.5); white-space: nowrap; }
/* 半透明玻璃按钮（顶栏：音乐/收藏/分享） */
.vp-topbtn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 32px; padding: 0 12px;
    background: rgba(255,255,255,0.14); color: #fff; border: 1px solid rgba(255,255,255,0.25); backdrop-filter: blur(8px);
    border-radius: 8px; font-size: 13px; cursor: pointer; transition: all 0.2s; white-space: nowrap; flex-shrink: 0; }
.vp-topbtn:hover { background: rgba(255,255,255,0.26); border-color: rgba(255,255,255,0.5); color: #fff; }
.vp-topbtn.active { background: rgba(255,255,255,0.34); border-color: rgba(255,255,255,0.72); color: #fff; }
.vp-topbtn.round { width: 32px; padding: 0; border-radius: 50%; }
.vp-topbtn svg { width: 16px; height: 16px; display: block; }
.vp-music-ico { width: 18px; height: 18px; display: block; }
@keyframes vp-music-spin { to { transform: rotate(360deg); } }
.vp-topbtn.active .vp-music-ico { animation: vp-music-spin 2.6s linear infinite; }
/* 移动端顶栏适配：窄屏下收藏/分享收成纯图标圆钮（文字标签隐藏），避免中文标签被挤压后竖排换行 */
@media (max-width: 640px) {
    .vp-topbar { padding: 0 12px; }
    .vp-topbar-right { gap: 6px; }
    .vp-title { max-width: 46vw; }
    .vp-topbtn { width: 32px; padding: 0; border-radius: 50%; gap: 0; }
    .vp-topbtn > span { display: none; }
}
@media (max-width: 400px) {
    .vp-author { display: none; }
}
/* 底部胶囊工具栏 */
.vp-toolbar { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.7);
    backdrop-filter: blur(8px); border-radius: 28px; padding: 8px 16px; display: flex; align-items: center; gap: 4px; z-index: 6; }
.vp-toolbar button { width: 36px; height: 36px; border: none; background: transparent; color: #fff; border-radius: 50%;
    cursor: pointer; font-size: 16px; transition: all 0.2s; display: flex; align-items: center; justify-content: center; }
.vp-toolbar button:hover { background: rgba(255,255,255,0.15); }
.vp-toolbar button.active { background: rgba(79,110,247,0.65); }
.vp-toolbar button svg { width: 18px; height: 18px; display: block; }
/* 场景选择横向条（工具栏上方，可横向滚动） */
.vp-spop { position: absolute; bottom: 86px; left: 50%; transform: translateX(-50%) translateY(8px); z-index: 8;
    max-width: 86%; opacity: 0; pointer-events: none; transition: opacity 0.25s, transform 0.25s; }
.vp-spop.show { opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0); }
.vp-spop-list { display: flex; gap: 10px; padding: 12px 14px; overflow-x: auto; overflow-y: hidden;
    background: rgba(18,20,28,0.88); backdrop-filter: blur(14px); border: 1px solid rgba(255,255,255,0.1);
    border-radius: 14px; scroll-snap-type: x mandatory; }
.vp-spop-list::-webkit-scrollbar { height: 5px; }
.vp-spop-list::-webkit-scrollbar-track { background: rgba(255,255,255,0.05); border-radius: 3px; }
.vp-spop-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.2); border-radius: 3px; }
.vp-spop-item { flex: none; width: 132px; cursor: pointer; scroll-snap-align: center; border: 2px solid transparent;
    border-radius: 10px; overflow: hidden; background: rgba(255,255,255,0.05); transition: all 0.2s; }
.vp-spop-item:hover { border-color: rgba(255,255,255,0.45); transform: translateY(-2px); }
.vp-spop-item.active { border-color: #4F6EF7; box-shadow: 0 0 14px rgba(79,110,247,0.45); }
.vp-spop-thumb { position: relative; width: 100%; aspect-ratio: 16 / 9; background-size: cover; background-position: center; background-color: #222; }
.vp-spop-index { position: absolute; left: 6px; top: 6px; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 10px;
    display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600; color: #fff;
    background: rgba(0,0,0,0.55); backdrop-filter: blur(4px); }
.vp-spop-item.active .vp-spop-index { background: #4F6EF7; }
.vp-spop-label { font-size: 12px; color: rgba(255,255,255,0.85); text-align: center; padding: 6px 8px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 520px) {
    .vp-spop { max-width: 94%; bottom: 82px; }
    .vp-spop-item { width: 112px; }
    .vp-spop-list { gap: 8px; padding: 10px; }
}
/* 沉浸模式：隐藏顶栏/工具栏/场景条/水印（眼睛按钮除外，便于恢复） */
/* 小地图：右下角概览图 + 可拖动视口矩形（水平按 360° 映射当前视角），仅作品开启时由 panoview.js 生成 */
.vp-minimap { position: absolute; right: 16px; bottom: 64px; width: 180px; height: 96px; z-index: 7;
    background-size: 100% 100%; background-position: center; background-repeat: no-repeat; background-color: rgba(18,20,28,0.6);
    border: 1px solid rgba(255,255,255,0.35); border-radius: 8px; box-shadow: 0 4px 14px rgba(0,0,0,0.4);
    overflow: hidden; cursor: pointer; touch-action: none; }
.vp-mm-viewport { position: absolute; top: 8%; height: 84%; width: 20%; left: 0; box-sizing: border-box;
    border: 2px solid rgba(255,255,255,0.7); background: rgba(18,20,28,0.45); border-radius: 4px; cursor: grab; }
.vp-mm-viewport:active { cursor: grabbing; }
/* 移动端：底部胶囊工具栏几乎占满整宽，小地图需抬高到工具栏上方并收窄，避免遮挡按钮 */
@media (max-width: 640px) {
    .vp-minimap { right: 10px; bottom: 84px; width: 128px; height: 70px; }
    /* 工具栏手机端瘦身：仅缩小按钮尺寸/间距/内边距，避免拥挤（保留全部按钮，放大缩小功能可见） */
    .vp-toolbar { padding: 6px 10px; gap: 2px; bottom: 14px; }
    .vp-toolbar button { width: 32px; height: 32px; font-size: 15px; }
    .vp-toolbar button svg { width: 17px; height: 17px; }
    /* 品牌角标上移，避开底部居中的工具栏 */
    .vp-brand { bottom: 60px; right: 10px; }
    /* 品牌 Logo 随小屏等比缩小：桌面 128×34 上限在手机上占比过大，收窄到约屏宽 1/4 以内 */
    .vp-brand-logo { max-height: 26px; max-width: 92px; padding: 2px 5px; border-radius: 5px; }
    .vp-logo-top-left, .vp-logo-top-right { top: 60px; }
    .vp-logo-top-left { left: 10px; }
    .vp-logo-top-right { right: 10px; }
    .vp-logo-bottom-left { bottom: 60px; left: 10px; }
}
.vp-uihide .vp-topbar, .vp-uihide .vp-toolbar > button:not(#btnHideUi), .vp-uihide .vp-spop, .vp-uihide .vp-brand, .vp-uihide .vp-minimap, .vp-uihide .vp-logo-anchor {
    opacity: 0 !important; pointer-events: none !important; transform: translateY(8px); }
.vp-uihide .vp-toolbar { background: transparent; backdrop-filter: none; border-color: transparent; }
/* 沉浸模式下的眼睛：脱离工具栏，黑色固定悬浮钮，可拖动 */
.vp-uihide #btnHideUi { position: fixed; z-index: 40; left: 50%; top: auto; bottom: 20px; transform: translateX(-50%);
    display: flex; align-items: center; justify-content: center; color: #fff; border-radius: 50%;
    width: 46px; height: 46px; background: rgba(0,0,0,0.72) !important; border: 1px solid rgba(255,255,255,0.28);
    box-shadow: 0 4px 14px rgba(0,0,0,0.45); backdrop-filter: blur(6px); cursor: grab; touch-action: none; opacity: 1 !important; }
.vp-uihide #btnHideUi:active { cursor: grabbing; }
.vp-uihide #btnHideUi svg { width: 20px; height: 20px; display: block; }
/* 热点弹窗：与场景评论浮窗（vp-cpanel）共用同一套暗色玻璃质感与标题栏结构 */
.vp-overlay { position: fixed; inset: 0; background: rgba(6,8,14,0.6); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
    display: none; align-items: center; justify-content: center; z-index: 1000; padding: 20px; opacity: 0; transition: opacity 0.25s ease; }
.vp-overlay.show { display: flex; opacity: 1; }
.vp-panel { background: rgba(18,20,28,0.78); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
    border: 1px solid rgba(255,255,255,0.12); border-radius: 14px; box-shadow: 0 10px 34px rgba(0,0,0,0.45);
    max-width: 640px; width: 100%; max-height: 80vh; display: flex; flex-direction: column; overflow: hidden; color: #fff;
    transform: translateY(12px) scale(0.98); transition: transform 0.28s cubic-bezier(.2,.8,.2,1); }
.vp-overlay.show .vp-panel { transform: translateY(0) scale(1); }
/* 标题栏：与 vp-cpanel-head 同款（半透明白底 + 下分隔线） */
.vp-panel-head { display: flex; align-items: center; gap: 8px; padding: 12px 14px; flex-shrink: 0;
    background: rgba(255,255,255,0.06); border-bottom: 1px solid rgba(255,255,255,0.08); user-select: none; }
.vp-panel-title { font-size: 14px; font-weight: 700; color: #fff; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-panel-close { margin-left: auto; width: 24px; height: 24px; border: none; border-radius: 6px; background: transparent; flex-shrink: 0;
    color: rgba(255,255,255,0.75); font-size: 18px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background 0.15s, color 0.15s; }
.vp-panel-close:hover { background: rgba(255,255,255,0.14); color: #fff; }
.vp-panel-body { padding: 16px 14px; overflow-y: auto; }
.vp-panel-body::-webkit-scrollbar { width: 6px; }
.vp-panel-body::-webkit-scrollbar-track { background: rgba(255,255,255,0.05); border-radius: 3px; }
.vp-panel-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.2); border-radius: 3px; }
.vp-panel video, .vp-panel audio, .vp-panel img { max-width: 100%; border-radius: 10px; display: block; }
.vp-panel video, .vp-panel img { box-shadow: 0 8px 28px rgba(0,0,0,0.45); }
.vp-panel audio { width: 100%; margin-top: 4px; }
.vp-panel-content { font-size: 14px; line-height: 1.85; color: rgba(255,255,255,0.85); white-space: pre-wrap; word-break: break-word; }
/* 品牌角标（按作品所有者套餐配置显隐）：文字水印 与 创作者 Logo 相互独立，可同屏竖排 */
.vp-brand { position: absolute; bottom: 12px; right: 16px; z-index: 5; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; pointer-events: none; }
.vp-brand-text { font-size: 11px; color: rgba(255,255,255,0.35); }
.vp-brand-logo { display: block; max-height: 34px; max-width: 128px; object-fit: contain; border-radius: 6px; background: rgba(0,0,0,0.28); padding: 3px 7px; box-shadow: 0 2px 8px rgba(0,0,0,0.28); }
/* Logo 跳转链接容器：品牌角标整体默认 pointer-events:none，有链接时仅此容器恢复可点，新开窗口不覆盖当前浏览 */
.vp-brand-link { pointer-events: auto; display: block; cursor: pointer; }
.vp-brand-link:hover .vp-brand-logo { background: rgba(0,0,0,0.5); transform: translateY(-1px); transition: background 0.15s, transform 0.15s; }
/* 品牌 Logo 四角定位锚点：右下角仍与文字水印共用 vp-brand 竖排，其余三角独立锚点（避开顶栏/工具栏/小地图） */
.vp-logo-anchor { position: absolute; z-index: 5; pointer-events: none; }
.vp-logo-top-left { top: 64px; left: 16px; }
.vp-logo-top-right { top: 64px; right: 16px; }
.vp-logo-bottom-left { bottom: 12px; left: 16px; }
/* 空场景占位 */
.vp-noscene { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    color: rgba(255,255,255,0.45); font-size: 16px; text-align: center; flex-direction: column; gap: 10px; z-index: 3; }
/* 加载遮罩：进入页面即显示，全景资源全部加载完成后淡出 */
.vp-loading { position: fixed; inset: 0; z-index: 60; background: rgba(0,0,0,0.78); display: flex; flex-direction: column;
    align-items: center; justify-content: center; gap: 14px; color: rgba(255,255,255,0.85); font-size: 14px;
    letter-spacing: 1px; transition: opacity 0.4s; }
.vp-loading.hide { opacity: 0; pointer-events: none; }
.vp-spinner { width: 44px; height: 44px; border: 3px solid rgba(255,255,255,0.2); border-top-color: #fff;
    border-radius: 50%; animation: vp-spin 0.9s linear infinite; }
@keyframes vp-spin { to { transform: rotate(360deg); } }
/* 轻提示（替代 layui layer.msg，导出离线包无 layui 依赖） */
.vp-toast { position: fixed; top: 64px; left: 50%; transform: translateX(-50%) translateY(-8px); z-index: 1200;
    background: rgba(0,0,0,0.75); color: #fff; padding: 8px 18px; border-radius: 20px; font-size: 13px; opacity: 0;
    pointer-events: none; transition: all 0.3s; backdrop-filter: blur(8px); max-width: 80vw;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vp-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
/* 加载进度百分比 */
.vp-loading-pct { font-size: 13px; color: rgba(255,255,255,0.6); letter-spacing: 1px; margin-top: -4px; min-height: 16px; }
/* 加载失败 / 不支持 WebGL 提示 */
.vp-fatal-ico { font-size: 40px; color: #f6b26b; line-height: 1; }
.vp-fatal-text { font-size: 14px; color: rgba(255,255,255,0.85); max-width: 70vw; text-align: center; line-height: 1.6; }
.vp-fatal-btn { margin-top: 10px; padding: 8px 22px; border: 1px solid rgba(255,255,255,0.4); background: rgba(255,255,255,0.12); color: #fff; border-radius: 20px; font-size: 13px; cursor: pointer; transition: all 0.2s; }
.vp-fatal-btn:hover { background: rgba(255,255,255,0.26); }
/* 防抓取：禁止文本选中与图片拖拽（配合禁右键） */
.vp-nocopy, .vp-nocopy * { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.vp-nocopy img { -webkit-user-drag: none; }
/* iOS Safari 等不支持 Fullscreen API 时的类全屏兜底 */
.vp-view.vp-pseudofull { position: fixed; inset: 0; z-index: 2147483000; }
/* 场景评论浮窗：半透明玻璃质感，默认靠右；标题栏可拖动，可最小化/关闭 */
.vp-cpanel { position: absolute; top: 76px; right: 16px; width: 320px; max-width: calc(100vw - 32px); z-index: 12;
    display: none; flex-direction: column; border-radius: 14px; overflow: hidden; color: #fff;
    background: rgba(18,20,28,0.78); backdrop-filter: blur(14px); border: 1px solid rgba(255,255,255,0.12);
    box-shadow: 0 10px 34px rgba(0,0,0,0.45); }
.vp-cpanel.show { display: flex; }
.vp-cpanel-head { display: flex; align-items: center; gap: 8px; padding: 10px 12px; cursor: move; touch-action: none;
    background: rgba(255,255,255,0.06); border-bottom: 1px solid rgba(255,255,255,0.08); user-select: none; }
.vp-cpanel-title { font-size: 13px; font-weight: 700; }
.vp-cpanel-count { font-size: 11px; color: rgba(255,255,255,0.65); background: rgba(79,110,247,0.55); border-radius: 9px; padding: 1px 8px; }
.vp-cpanel-btns { margin-left: auto; display: flex; gap: 4px; }
.vp-cpanel-btn { width: 24px; height: 24px; border: none; border-radius: 6px; background: transparent; color: rgba(255,255,255,0.75);
    font-size: 15px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.vp-cpanel-btn:hover { background: rgba(255,255,255,0.14); color: #fff; }
.vp-cpanel-list { max-height: 46vh; overflow-y: auto; padding: 10px 12px; display: flex; flex-direction: column; gap: 10px; }
.vp-cpanel-list::-webkit-scrollbar { width: 5px; }
.vp-cpanel-list::-webkit-scrollbar-track { background: rgba(255,255,255,0.05); border-radius: 3px; }
.vp-cpanel-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.2); border-radius: 3px; }
.vp-cpanel-empty { font-size: 12px; color: rgba(255,255,255,0.5); text-align: center; padding: 22px 0; }
.vp-cpanel-foot { padding: 10px 12px; border-top: 1px solid rgba(255,255,255,0.08); }
.vp-cpanel-send { width: 100%; border: none; border-radius: 9px; padding: 9px 0; font-size: 13px; cursor: pointer;
    background: rgba(79,110,247,0.85); color: #fff; transition: background 0.2s; }
.vp-cpanel-send:hover { background: #4F6EF7; }
/* 评论条目：头像（有图显图，无图彩色首字母）+ 昵称/时间 + 内容 */
.vp-cmt-item { display: flex; gap: 9px; padding: 9px 10px; border-radius: 10px; cursor: pointer; transition: all 0.2s;
    background: rgba(255,255,255,0.05); border: 1px solid transparent; }
.vp-cmt-item:hover { background: rgba(255,255,255,0.1); }
.vp-cmt-item.focus { border-color: #4F6EF7; background: rgba(79,110,247,0.16); box-shadow: 0 0 12px rgba(79,110,247,0.3); }
.vp-cmt-avatar { width: 30px; height: 30px; border-radius: 50%; flex-shrink: 0; font-size: 13px; font-weight: 700;
    display: flex; align-items: center; justify-content: center; }
.vp-cmt-avatar.has-img { background-size: cover; background-position: center; background-color: rgba(255,255,255,0.12); }
.vp-cmt-avatar.guest { background: rgba(255,255,255,0.14); color: rgba(255,255,255,0.55); }
.vp-cmt-main { flex: 1; min-width: 0; }
.vp-cmt-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; font-size: 11px; color: rgba(255,255,255,0.5); margin-bottom: 3px; }
.vp-cmt-nick { color: rgba(255,255,255,0.9); font-weight: 600; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-cmt-content { font-size: 12.5px; line-height: 1.65; color: rgba(255,255,255,0.85); word-break: break-all; white-space: pre-wrap; }
/* 就地留言卡片：展开在浮窗列表下方，提交坐标取当前视角中心 */
.vp-cpop { display: none; flex-direction: column; gap: 8px; padding: 10px 12px; border-top: 1px solid rgba(255,255,255,0.08); }
.vp-cpanel.has-pop .vp-cpop { display: flex; }
.vp-cpop-quote { font-size: 11px; color: rgba(255,255,255,0.55); background: rgba(255,255,255,0.06); border-left: 2px solid #4F6EF7;
    border-radius: 0 6px 6px 0; padding: 5px 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vp-cpop-ta { width: 100%; box-sizing: border-box; min-height: 68px; border: 1px solid rgba(255,255,255,0.16); border-radius: 8px;
    padding: 8px 10px; font-size: 13px; line-height: 1.6; color: #fff; background: rgba(0,0,0,0.3); resize: vertical; }
.vp-cpop-ta:focus { outline: none; border-color: #4F6EF7; }
.vp-cpop-row { display: flex; align-items: center; gap: 8px; }
.vp-cpop-num { font-size: 11px; color: rgba(255,255,255,0.45); margin-right: auto; }
.vp-cpop-cancel, .vp-cpop-send { border: none; border-radius: 8px; padding: 7px 16px; font-size: 12.5px; cursor: pointer; transition: all 0.2s; }
.vp-cpop-cancel { background: rgba(255,255,255,0.1); color: rgba(255,255,255,0.8); }
.vp-cpop-cancel:hover { background: rgba(255,255,255,0.18); }
.vp-cpop-send { background: #4F6EF7; color: #fff; }
.vp-cpop-send:hover { background: #3d5be6; }
.vp-cpop-send:disabled { opacity: 0.55; cursor: default; }
/* 场景内评论文字气泡（krpano html 文本热点）：默认常显，左侧留言气泡小图标 + 半透明胶囊，右下角小尾指向留言坐标 */
.vp-bubble { display: inline-flex; align-items: center; gap: 5px; max-width: 200px; padding: 5px 11px; border-radius: 12px 12px 3px 12px; cursor: pointer;
    background: rgba(18,20,28,0.62); backdrop-filter: blur(6px); border: 1px solid rgba(255,255,255,0.25);
    box-shadow: 0 4px 14px rgba(0,0,0,0.35); color: #fff; font-size: 12px; line-height: 1.5; }
.vp-bubble > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vp-bubble-ico { flex-shrink: 0; color: #FFC94D; }
@media (max-width: 520px) {
    .vp-cpanel { top: 66px; right: 8px; width: 280px; }
    .vp-cpanel-list { max-height: 38vh; }
    .vp-bubble { max-width: 140px; font-size: 11px; }
}
/* 兴趣点（POI）面板：右侧可折叠分组列表（与评论浮窗同一玻璃质感） */
.vp-poi { position: absolute; top: 76px; right: 16px; width: 300px; max-width: calc(100vw - 32px); z-index: 12;
    display: none; flex-direction: column; border-radius: 14px; overflow: hidden; color: #fff;
    background: rgba(18,20,28,0.78); backdrop-filter: blur(14px); border: 1px solid rgba(255,255,255,0.12);
    box-shadow: 0 10px 34px rgba(0,0,0,0.45); }
.vp-poi.show { display: flex; }
.vp-poi-head { display: flex; align-items: center; gap: 8px; padding: 10px 12px;
    background: rgba(255,255,255,0.06); border-bottom: 1px solid rgba(255,255,255,0.08); }
.vp-poi-title { font-size: 13px; font-weight: 700; }
.vp-poi-close { margin-left: auto; width: 24px; height: 24px; border: none; border-radius: 6px; background: transparent;
    color: rgba(255,255,255,0.75); font-size: 16px; line-height: 1; cursor: pointer; }
.vp-poi-close:hover { background: rgba(255,255,255,0.14); color: #fff; }
.vp-poi-body { max-height: 52vh; overflow-y: auto; padding: 8px 10px 10px; }
.vp-poi-body::-webkit-scrollbar { width: 5px; }
.vp-poi-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.2); border-radius: 3px; }
.vp-poi-group { font-size: 11px; color: rgba(255,255,255,0.5); letter-spacing: 1px; margin: 8px 4px 4px; }
.vp-poi-item { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 9px; cursor: pointer;
    background: rgba(255,255,255,0.04); margin-bottom: 5px; transition: all 0.18s; }
.vp-poi-item:hover { background: rgba(79,110,247,0.18); }
.vp-poi-dot { width: 8px; height: 8px; border-radius: 50%; background: #FFC94D; flex-shrink: 0; box-shadow: 0 0 8px rgba(255,201,77,0.7); }
.vp-poi-name { font-size: 12.5px; color: rgba(255,255,255,0.9); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 商品卡片 */
.vp-goods { display: flex; flex-direction: column; gap: 10px; }
.vp-goods-img { height: 150px; border-radius: 10px; background-size: cover; background-position: center; background-color: rgba(255,255,255,0.08); }
.vp-goods-title { font-size: 15px; font-weight: 700; color: #fff; }
.vp-goods-price { font-size: 20px; font-weight: 800; color: #FF6B4A; display: flex; align-items: baseline; gap: 2px; }
.vp-goods-cur { font-size: 13px; }
.vp-goods-unit { font-size: 12px; color: rgba(255,255,255,0.55); font-weight: 500; margin-left: 2px; }
.vp-goods-desc { font-size: 13px; line-height: 1.7; color: rgba(255,255,255,0.78); white-space: pre-wrap; word-break: break-word; }
.vp-goods-acts { display: flex; gap: 10px; margin-top: 4px; }
.vp-goods-btn { flex: 1; text-align: center; text-decoration: none; border-radius: 9px; padding: 10px 0; font-size: 13px;
    background: rgba(255,255,255,0.1); color: #fff; transition: background 0.2s; }
.vp-goods-btn:hover { background: rgba(255,255,255,0.18); }
.vp-goods-btn-primary { background: #4F6EF7; }
.vp-goods-btn-primary:hover { background: #3d5be6; }
/* 表单留资 */
.vp-form { display: flex; flex-direction: column; gap: 12px; }
.vp-form-field { display: flex; flex-direction: column; gap: 5px; font-size: 12.5px; color: rgba(255,255,255,0.72); }
.vp-form-field > span em { color: #FF6B4A; font-style: normal; }
.vp-form-field input, .vp-form-field textarea, .vp-form-field select { box-sizing: border-box; width: 100%;
    border: 1px solid rgba(255,255,255,0.16); border-radius: 8px; padding: 9px 10px; font-size: 13px; color: #fff;
    background: rgba(0,0,0,0.3); resize: vertical; }
.vp-form-field input:focus, .vp-form-field textarea:focus, .vp-form-field select:focus { outline: none; border-color: #4F6EF7; }
.vp-form-field select option { color: #1a1a1a; }
.vp-form-submit { border: none; border-radius: 9px; padding: 11px 0; font-size: 14px; cursor: pointer;
    background: #4F6EF7; color: #fff; transition: background 0.2s; }
.vp-form-submit:hover { background: #3d5be6; }
.vp-form-submit:disabled { opacity: 0.6; cursor: default; }
.vp-form-ok { text-align: center; font-size: 14px; line-height: 1.8; color: rgba(255,255,255,0.9); padding: 24px 10px; }
.vp-form-offline-hint { margin-top: 4px; text-align: center; font-size: 12px; line-height: 1.6; color: rgba(255,255,255,0.65); padding: 10px; background: rgba(255,255,255,0.08); border-radius: 8px; }
/* 表单弹框专属：面板 / 输入框 / 提交按钮圆角收紧为 4px（仅 vp-panel-form，不影响图文/视频/商品等其它弹窗） */
.vp-panel.vp-panel-form { border-radius: 4px; }
.vp-panel.vp-panel-form .vp-form-field input,
.vp-panel.vp-panel-form .vp-form-field textarea,
.vp-panel.vp-panel-form .vp-form-field select { border-radius: 4px; }
.vp-panel.vp-panel-form .vp-form-submit { border-radius: 4px; }
@media (max-width: 520px) { .vp-poi { top: 66px; right: 8px; width: 260px; } .vp-poi-body { max-height: 44vh; } }

