/* 拆分自原单文件 index.html - 样式部分 */
/* 【v1.32.4】z-index 集中管理：所有层级通过 CSS 变量统一维护，避免硬编码散落 */
:root{
  --z-bg-decor:0;            /* #app::before 装饰背景 */
  --z-app:1;                  /* #app 主容器 */
  --z-picker-highlight:1;     /* picker 高亮条 */
  --z-thumb-del-before:-1;    /* 缩略图删除按钮 ::before 背景 */
  --z-thumb-del:2;            /* 缩略图删除按钮 */
  --z-thumb-expand:2;         /* 缩略图展开按钮（拼接预览/回收站） */
  --z-record-btn:2;           /* 录时按钮 */
  --z-picker-label:2;         /* picker 列标签 */
  --z-seat-icon:5;            /* 座位状态图标 */
  --z-page-header:10;         /* 页头 */
  --z-bottom-bar:100;         /* 底部栏 */
  --z-area-dragging:100;      /* 区域按钮拖拽 */
  --z-modal-overlay:250;      /* 通用模态遮罩 */
  --z-panel-overlay:260;      /* 抽屉遮罩（功能面板/拼接/筛选） */
  --z-panel:261;              /* 抽屉本体 */
  --z-trash-browser:300;      /* 回收站浏览器遮罩 */
  --z-preview-floating:301;   /* 预览浮层（保存按钮/指示器/AI比对结果） */
  --z-about-modal:350;        /* 关于弹窗（高于设置面板/筛选/批量下载，低于全屏预览） */
  --z-preview-modal:400;      /* 全屏预览 */
  --z-preview-close:401;      /* 预览关闭按钮 */
  --z-skeleton:500;           /* 骨架屏 */
  --z-update-bar:9999;        /* 更新提示条 */
  --z-toast:9999;             /* 全局轻提示 */
  --z-loading:10000;          /* 全局加载遮罩 */
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;font-size:15px;color:#333;background:#f0f2f5;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
/* 【v1.2.0 iOS兼容】所有可点击元素统一 cursor:pointer，iOS 不做悬停效果 */
button,[data-action],.ts-checkbox,.thumb-del,.thumb-wrap,.concat-thumb,.filter-slot-item,.floor-btn,.area-btn,.record-time-btn{cursor:pointer;-webkit-user-select:none;user-select:none}
/* 【v1.9.25】按压视觉反馈：:active + ._pressing 双重匹配，移动端 touchstart 立即触发 */
.floor-btn:active,.floor-btn._pressing{transition:transform .1s ease}
.area-btn:active,.area-btn._pressing{transition:transform .1s ease}
.record-time-btn:active,.record-time-btn._pressing{transition:background .1s ease,transform .1s ease}
.seat-btn:active,.seat-btn._pressing{transition:background .1s ease,transform .1s ease}
.func-item:active,.func-item._pressing{transition:background .1s ease}
.header-btn:active,.header-btn._pressing{transition:opacity .1s ease,transform .1s ease}
.btn-delete-seat:active,.btn-delete-seat._pressing{transition:background .1s ease}
.update-bar:active,.update-bar._pressing{transition:opacity .1s ease}
/* 【v1.37.3 修复快速连点丢click】交互按钮统一 touch-action:manipulation：
   告知浏览器这些元素无需双击缩放手势，消除双击检测窗口（约300ms内第二次tap不派发click）。
   根因：iOS Safari 无视 viewport user-scalable=no 保留双击缩放检测（iPhone15/iOS26实测），
   部分安卓浏览器（如魅族）同样保留；表现为快速点击"区域"按钮第二次无响应只有按压反馈。
   manipulation 仅禁用双击缩放，不影响单击/滚动/长按/拖动等任何现有手势 */
.floor-btn,.area-btn,.record-time-btn,.seat-btn,.header-btn,.btn-delete-seat,.func-item,.update-bar,.modal-btns button,.batch-chip,.filter-slot-item,.ts-checkbox,.thumb-del,.thumb-wrap,.concat-thumb{touch-action:manipulation}
#app{max-width:480px;margin:0 auto;padding:0 10px 140px;min-height:calc(100vh - 50px);min-height:calc(100dvh - 50px)}

/* 【修复文字消失】page-header 从 app 中移出，作为独立固定元素 */
.page-header{display:flex;align-items:center;justify-content:space-between;padding:14px 10px 10px;gap:8px;max-width:480px;margin:0 auto;background:#f0f2f5;position:relative;z-index:var(--z-page-header);padding-top:calc(14px + constant(safe-area-inset-top));padding-top:calc(14px + env(safe-area-inset-top))}
/* 【v1.28.22】标题栏第二行：mode-hint + photo-tip，位于 title-group 内 */
/* header-bottom 已在 title-group 内（LOGO 40px + gap 8px = 48px 处），padding-left:0 使 mode-hint 左边缘对齐标题文字 */
/* 【v1.28.23】align-self:stretch 让 header-bottom 宽度拉伸到 title-group(=page-title 标题+版本号)宽度，
   使 photo-tip 右边缘对齐版本号右边缘，自适应版本号宽度变化 */
.header-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-left:0;margin-top:2px;align-self:stretch}
.page-title{font-size:20px;font-weight:700;color:#1a1a1a;letter-spacing:1px;cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none;pointer-events:auto!important;position:relative;z-index:var(--z-page-header)}
/* 【v1.27.0】标题栏两端对齐：左侧 LOGO+标题组 */
.header-left{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 auto}
.header-logo{width:40px;height:40px;flex-shrink:0;border:1px solid rgba(0,0,0,.15);border-radius:6px;object-fit:contain;display:block;background:#fff}
/* 【v1.28.21】恢复 v1.28.18 右侧按钮容器：func-btn 与 filter-btn-multi 底边对齐 */
.header-right{display:flex;align-items:flex-end;gap:10px;flex-shrink:0}
.header-btn{padding:6px 12px;font-size:12px;font-weight:600;border:none;border-radius:6px;color:#fff;cursor:pointer;white-space:nowrap;transition:opacity .2s ease-in-out,box-shadow .2s ease-in-out,transform .2s ease-in-out}
.header-btn:active,.header-btn._pressing{opacity:.7}
/* 【v1.34.0】功能面板打开时设置按钮保持凹陷视觉效果 */
/* 使用 :has() 匹配 body 下 #func-panel.show 状态（#func-btn 在 DOM 中位于 #func-panel 之前，~ 兄弟选择器无法匹配） */
body:has(#func-panel.show) #func-btn,#func-btn.expanded{box-shadow:inset 0 2px 4px rgba(0,0,0,.3);transform:scale(.97)}
.btn-cleanup{background:#ff4d4f}
.btn-batch-dl{background:#722ed1}
/* 【v1.28.18】拍照提醒：扫光动效 6s */
/* 【v1.28.21】photo-tip 移至 header-bottom 第二行，与 mode-hint 同行，右边缘与设置按钮对齐 */
/* photo-tip 基础样式：不支持 background-clip:text 的浏览器降级为纯色文字 */
.photo-tip{font-size:11px;color:#999;white-space:nowrap;flex-shrink:0;line-height:1.2}
.theme-yiban .photo-tip{color:#b0b0b0}
/* 【v1.28.16→v1.28.17修复】扫光动效根因：原 text-shadow:0 0 0 #999 是无偏移无模糊硬阴影，
   绘制在 background-clip:text 的光剑之上，把光剑透明部分填成灰色，导致动效不可见。
   新方案：gradient 用"底色→高亮→底色"，文字始终可见，光剑流过时变亮，无需 text-shadow 兜底。
   用 @supports 检测，不支持的浏览器保持纯色文字。 */
/* 【v1.28.18修复】蓝色主题色块根因：.theme-yiban .photo-tip 原用 background 简写覆盖渐变，
   background 简写会重置 background-clip 为默认值 border-box，导致渐变变成整个元素背景色块。
   改用 background-image 只覆盖渐变图，保留 background-clip:text 不被重置。 */
/* 【v1.28.23】扫光动画修复：background-position 200%→100%、-200%→-100%，总移动 200%，6s 只扫一次 */
@keyframes photo-tip-scan{0%{background-position:100% 0}100%{background-position:-100% 0}}
@supports ((background-clip:text) or (-webkit-background-clip:text)){
  .photo-tip{
    background:linear-gradient(90deg,#999 0%,rgba(255,255,255,.9) 50%,#999 100%);
    background-size:200% 100%;
    background-position:100% 0;
    background-clip:text;
    -webkit-background-clip:text;
    -webkit-text-fill-color:transparent;
    animation:photo-tip-scan 6s ease-in-out infinite
  }
  .theme-yiban .photo-tip{
    background-image:linear-gradient(90deg,#b0b0b0 0%,rgba(0,255,255,.9) 50%,#b0b0b0 100%)
  }
}

/* 【修改1】删除座位按钮受开关控制 */
.btn-delete-seat{padding:4px 12px;font-size:12px;font-weight:600;border:1px solid #ff4d4f;border-radius:4px;background:#fff;color:#ff4d4f;cursor:pointer;margin-left:auto;display:none}
.btn-delete-seat.visible{display:inline-block}
.btn-delete-seat:active,.btn-delete-seat._pressing{background:#fff1f0}

/* 【v1.5.7】新版本更新提示条：滑入动画 + 不遮挡标题栏 */
/* 【v1.37.0 M-1修复】PWA standalone 模式下顶部避开刘海/灵动岛（Safari 浏览器模式 inset-top=0 无变化） */
.update-bar{position:fixed;top:constant(safe-area-inset-top);top:env(safe-area-inset-top);left:0;right:0;z-index:var(--z-update-bar);background:linear-gradient(135deg,#1890ff,#096dd9);color:#fff;text-align:center;padding:12px 16px;font-size:14px;font-weight:500;cursor:pointer;box-shadow:0 2px 8px rgba(24,144,255,.4);transform:translateY(-100%);transition:transform .3s ease}
.update-bar.show{transform:translateY(0)}
.update-bar:active,.update-bar._pressing{opacity:.85}
/* 提示条显示时下推标题栏，避免遮挡 */
.page-header{transition:margin-top .3s ease}
.update-bar.show+.page-header{margin-top:44px}

/* 【修改3】功能面板 */
.func-panel-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:var(--z-panel-overlay)}
.func-panel-overlay.show{display:block}
/* 【v1.3.9 修复2+3】菜单面板：固定最大高度70vh，内部可滚动，阻止背景滑动穿透 */
.func-panel{position:fixed;left:0;right:0;bottom:0;background:#fff;border-radius:16px 16px 0 0;z-index:var(--z-panel);transform:translateY(100%);transition:transform .3s ease;max-width:480px;margin:0 auto;max-height:70vh;display:flex;flex-direction:column;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}
.func-panel.show{transform:translateY(0)}
.func-panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0;flex-shrink:0}
.func-panel-title{font-size:17px;font-weight:700;color:#1a1a1a}
.func-panel-close{width:36px;height:36px;border:none;background:#f5f5f5;border-radius:50%;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#999;min-width:44px;min-height:44px}
.func-panel-close:active{background:#e8e8e8}
/* 【v1.3.9 修复3】func-panel-body 可内部滚动，overflow-y:auto */
.func-panel-body{padding:8px 20px 24px;overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1;min-height:0;overscroll-behavior:contain}
/* 【v1.3.2 菜单优化4】菜单项高度缩小，更紧凑，保持 44px 最低触摸区域 */
.func-item{display:flex;align-items:center;justify-content:space-between;padding:10px 0;min-height:44px;border-bottom:1px solid #f5f5f5;cursor:pointer;-webkit-tap-highlight-color:transparent}
.func-item:last-child{border-bottom:none}
.func-item:active,.func-item._pressing{background:#fafafa;border-radius:8px}
.func-item-label{font-size:15px;color:#333;font-weight:500}
.func-item-label .func-item-desc{font-size:12px;color:#999;font-weight:400;margin-top:2px}
/* 开关样式 */
.func-toggle{width:48px;height:28px;border-radius:14px;background:#bfbfbf;position:relative;cursor:pointer;transition:background .2s;flex-shrink:0}
.func-toggle.on{background:#52c41a}
.func-toggle::after{content:'';position:absolute;top:2px;left:2px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s}
.func-toggle.on::after{transform:translateX(20px)}

/* 【修改4】预览保存按钮淡出 */
#preview-save-btn{position:absolute;bottom:calc(50px + constant(safe-area-inset-bottom));bottom:calc(50px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);padding:10px 28px;font-size:14px;font-weight:600;border:none;border-radius:8px;background:rgba(24,144,255,.9);color:#fff;cursor:pointer;z-index:var(--z-preview-floating);box-shadow:0 2px 12px rgba(24,144,255,.4);transition:opacity .5s ease}
#preview-save-btn:active{opacity:.8}
#preview-save-btn.faded{opacity:.1}

.floor-btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:16px 20px;margin:8px 0;font-size:18px;font-weight:600;border:none;border-radius:10px;color:#fff;cursor:pointer;text-align:left;transition:transform .2s ease-in-out,box-shadow .2s ease-in-out,background .2s ease-in-out}
.floor-btn:active,.floor-btn._pressing{transform:scale(.97)}
/* 【v1.34.0】展开状态保持凹陷视觉效果，让用户一眼看出激活状态 */
.floor-btn.expanded{box-shadow:inset 0 2px 4px rgba(0,0,0,.3),inset 0 -1px 2px rgba(0,0,0,.15);transform:scale(.99)}
.floor-btn .floor-name{flex-shrink:0;white-space:nowrap}
.floor-btn .floor-right{flex-shrink:0;display:flex;align-items:center;gap:8px;white-space:nowrap;min-width:52px;justify-content:flex-end}
.floor-btn .arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid currentColor;display:inline-block;vertical-align:middle;transition:transform .25s}
.floor-btn.expanded .arrow{transform:rotate(180deg)}
.floor-btn .floor-count{font-size:13px;font-weight:400;opacity:.85}
.floor-1{background:linear-gradient(135deg,#667eea,#764ba2)}
.floor-2{background:linear-gradient(135deg,#f093fb,#f5576c)}
.floor-3{background:linear-gradient(135deg,#4facfe,#00f2fe)}
.floor-4{background:linear-gradient(135deg,#43e97b,#38f9d7)}
.floor-5{background:linear-gradient(135deg,#fa709a,#fee140)}

.area-container{display:none;padding:4px 0 8px 16px}
.area-container.show{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:flex-start;gap:6px;padding:4px 12px 8px}
.area-btn-wrap{position:relative;width:calc(33.33% - 4px);flex-shrink:0;overflow:visible}
.area-btn-wrap:has(.expanded){margin-bottom:36px}
.area-btn{display:inline-flex;flex-direction:column;align-items:center;width:100%;box-sizing:border-box;padding:8px 10px;font-size:14px;font-weight:600;border:2px solid transparent;border-radius:8px;background:#fff;color:#333;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.12);transition:transform .2s ease-in-out,border-color .2s ease-in-out,box-shadow .2s ease-in-out,background .2s ease-in-out;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.area-btn:active,.area-btn._pressing{transform:scale(.95)}
.area-btn .arrow{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;display:inline-block;vertical-align:middle;margin-left:6px;transition:transform .25s}
.area-btn .area-seat-count{font-size:10px;font-weight:400;color:#999;width:100%;text-align:left;line-height:1.3}
.area-btn .area-name-row{display:flex;align-items:center;justify-content:center;line-height:1.4}
.area-btn .area-stats{font-size:10px;font-weight:400;color:#999;width:100%;display:flex;justify-content:space-between;line-height:1.3;margin-top:1px}
.area-btn .area-stats .as-left{white-space:nowrap}
.area-btn .area-stats .as-right{white-space:nowrap}
.area-btn.expanded .arrow{transform:rotate(180deg)}
/* 【v1.17.2】区域按钮拖动调序 */
.area-btn._dragging{box-shadow:0 8px 24px rgba(0,0,0,.25);transform:scale(1.05);z-index:var(--z-area-dragging);opacity:.85;transition:box-shadow .15s,opacity .15s}
.area-btn._drag-placeholder{visibility:hidden;border:2px dashed #722ed1;opacity:.3}
.area-btn._drag-target{border-color:#722ed1;border-style:dashed}
._drag-placeholder-wrap{visibility:hidden;border:2px dashed #722ed1;opacity:.3;border-radius:8px;box-sizing:border-box;width:calc(33.33% - 4px);flex-shrink:0}
/* 【v1.3.15】选中高亮改为红色描边+无背景色，避免与蓝色提示混淆 */
/* 【v1.34.0】展开状态保持凹陷视觉效果 */
.area-btn.expanded{background:#fff;border-color:#ff4d4f;box-shadow:inset 0 2px 4px rgba(0,0,0,.2),inset 0 -1px 2px rgba(0,0,0,.1)}
.area-btn.has-images{border:2px solid #52c41a;background:linear-gradient(135deg,#f6ffed,#d9f7be);color:#389e0d}
.area-btn.has-images.expanded{border-color:#ff4d4f;background:linear-gradient(135deg,#f6ffed,#d9f7be);color:#389e0d;box-shadow:inset 0 2px 4px rgba(0,0,0,.2),inset 0 -1px 2px rgba(0,0,0,.1)}
/* 【v1.12.1】记录完成时间按钮：圆角胶囊形 */
.record-time-btn{display:inline-flex;align-items:center;justify-content:center;min-width:36px;min-height:36px;padding:4px 10px;margin:0;font-size:11px;font-weight:500;border:1.5px solid #d9d9d9;border-radius:20px;background:#f5f5f5;color:#666;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,transform .1s;-webkit-user-select:none;user-select:none;position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:4px;z-index:var(--z-record-btn)}
.record-time-btn:active,.record-time-btn._pressing{transform:translateX(-50%) scale(.95);background:#e8e8e8}
/* 【v1.13.3】楼层卡片完成时间显示：居中填充中间空间 */
.floor-completion{display:flex;flex-direction:column;flex:1;min-width:0;margin:0 8px;font-weight:400;color:rgba(255,255,255,.85);line-height:1.4;align-items:stretch;overflow:hidden}
.floor-completion .fc-row{display:flex;justify-content:space-between;width:100%;gap:12px}
.floor-completion .fc-row.fc-single-center{justify-content:center}
.floor-completion .fc-row>span{white-space:nowrap;flex:1 1 0%;min-width:0}
.floor-completion .fc-row>span.fc-item{display:inline-flex;align-items:baseline;gap:2px}
.floor-completion .fc-row>span.fc-item.fc-odd{justify-content:flex-start}
.floor-completion .fc-row>span.fc-item.fc-even{justify-content:flex-end}
.floor-completion .fc-area{flex-shrink:0}
.floor-completion .fc-time{white-space:nowrap}
.floor-completion.s1{font-size:14px}
.floor-completion.s2{font-size:12px}
.floor-completion.s3{font-size:11px}
.floor-completion.fixed{font-size:11px;word-break:break-word;overflow-wrap:break-word;line-height:1.3;flex:1;max-width:100%;text-align:center}
/* 【v1.12.0】记录完成时间二次确认弹窗 */
.record-confirm-box{background:#fff;border-radius:12px;padding:24px 20px 18px;width:280px;max-width:85vw;text-align:center;box-shadow:0 8px 30px rgba(0,0,0,.15)}
.record-confirm-text{font-size:15px;color:#333;margin-bottom:20px;line-height:1.5}
.record-confirm-btns{display:flex;gap:12px;justify-content:center}
.record-confirm-cancel,.record-confirm-ok,.record-confirm-delete{flex:1;padding:10px 0;border:none;border-radius:8px;font-size:15px;font-weight:500;cursor:pointer;transition:opacity .15s}
.record-confirm-cancel{background:#f0f0f0;color:#666}
.record-confirm-cancel:active{opacity:.7}
.record-confirm-ok{background:#1890ff;color:#fff}
.record-confirm-ok:active{opacity:.8}
/* 【v1.39.3】记录完成时间弹窗删除按钮（危险色，同"清除图片"#ff4d4f） */
.record-confirm-delete{background:#ff4d4f;color:#fff}
.record-confirm-delete:active{opacity:.8}

.seat-container{display:none;padding:8px 0}
.seat-container.show{display:block;flex-basis:100%;width:100%}
.seat-flow{display:flex;flex-wrap:wrap;row-gap:4px;padding:0;align-items:flex-start;justify-content:flex-start}
.seat-btn{width:calc(20% - 6px);height:44px;margin:0 3px;padding:0 8px;font-size:12px;font-weight:500;border:2px solid #d9d9d9;border-radius:6px;background:#fff;cursor:pointer;text-align:center;white-space:nowrap;overflow:visible;text-overflow:clip;transition:background .2s ease-in-out,border-color .2s ease-in-out,box-shadow .2s ease-in-out;position:relative;flex-shrink:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;flex-grow:0}
.seat-btn:active,.seat-btn._pressing{background:#e6f7ff}
/* 【v1.3.15】选中高亮改为红色描边+无背景色 */
/* 【v1.34.0】展开状态保持凹陷视觉效果 */
.seat-btn.expanded{background:#fff;border:2px solid #ff4d4f;box-shadow:inset 0 2px 4px rgba(0,0,0,.2),inset 0 -1px 2px rgba(0,0,0,.1)}
/* 【v1.3.10 重构】座位视觉提示：颜色基于全时段总数，图标分层显示 */
.seat-btn.has-images-1{border-color:#69c0ff;background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#096dd9;font-weight:700}
.seat-btn.has-images-2{border-color:#fa8c16;background:linear-gradient(135deg,#fff7e6,#ffe7ba);color:#d46b08;font-weight:700}
/* 【v1.3.15】有图+选中：红色描边，保留原有背景色 */
.seat-btn.has-images-1.expanded{border:2px solid #ff4d4f;background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#096dd9;font-weight:700;box-shadow:inset 0 2px 4px rgba(0,0,0,.2),inset 0 -1px 2px rgba(0,0,0,.1)}
.seat-btn.has-images-2.expanded{border:2px solid #ff4d4f;background:linear-gradient(135deg,#fff7e6,#ffe7ba);color:#d46b08;font-weight:700;box-shadow:inset 0 2px 4px rgba(0,0,0,.2),inset 0 -1px 2px rgba(0,0,0,.1)}
/* 【v1.3.10】闭眼图标：左上角，表示隐藏时段有图 */
.seat-btn .icon-hidden{position:absolute;top:2px;left:4px;right:auto;bottom:auto;width:14px;height:14px;display:flex;align-items:center;justify-content:center;z-index:var(--z-seat-icon)}
.seat-btn .icon-hidden svg{width:12px;height:12px;fill:#999;filter:drop-shadow(0 1px 1px rgba(255,77,79,.5))}
/* 【v1.3.10】筛选命中图标：右上角，表示可见时段有图（仅筛选非全选时显示） */
.seat-btn .icon-filter-hit{position:absolute;top:2px;right:6px;left:auto;bottom:auto;width:14px;height:14px;display:flex;align-items:center;justify-content:center;z-index:var(--z-seat-icon)}
.seat-btn .icon-filter-hit svg{width:12px;height:12px;fill:#52c41a}
.seat-btn-text{display:inline;line-height:1.3;text-align:center;pointer-events:none}
/* 二~五楼东区临时长编号字号缩小 */
.seat-btn.long-name{font-size:11.5px}
.theme-yiban .seat-btn.long-name{font-size:11.5px}
.theme-metal .seat-btn.long-name{font-size:11px}
.theme-pixel .seat-btn.long-name{font-size:9.5px}
.android-device .seat-btn.long-name{font-size:10.5px}
.android-device.theme-yiban .seat-btn.long-name{font-size:10.5px}
.android-device.theme-pixel .seat-btn.long-name{font-size:8.5px}
/* 【v1.36】爱心专座/视障专座背景水印标识（半透明，文字位于图标上方） */
.area-btn.aixin-area{position:relative;isolation:isolate}
.seat-btn.aixin-seat,.seat-btn.shizhang-seat{isolation:isolate}
.area-btn.aixin-area::before,.seat-btn.aixin-seat::before,.seat-btn.shizhang-seat::before{content:'';position:absolute;inset:0;z-index:-1;opacity:.15;pointer-events:none;background-repeat:no-repeat;background-position:center;background-size:contain}
.area-btn.aixin-area::before,.seat-btn.aixin-seat::before{background-image:url('aixin1.png')}
.seat-btn.shizhang-seat::before{background-image:url('shizhang1.png')}
.app-footer .usage-guide-divider{height:1px;background:rgba(0,0,0,.08);margin:8px 16px}
.add-seat-btn{width:calc(20% - 6px);height:44px;margin:0 3px;padding:0 8px;font-size:20px;font-weight:700;border:2px dashed #bfbfbf;border-radius:6px;background:#fafafa;cursor:pointer;text-align:center;color:#8c8c8c;transition:all .15s;flex-shrink:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;flex-grow:0}
.add-seat-btn:active{background:#e6f7ff;border-color:#1890ff;color:#1890ff}

.timeslot-container{display:none;width:100%;padding:8px 0}
.timeslot-container.show{display:block}
/* 【v1.38.0 防闪烁】时段列表展开渐显：内容就绪后由 JS 添加 ts-fade-in，
   0.15s 淡入掩盖 innerHTML 重建与图片解码的瞬切（替代原 opacity 硬切） */
.timeslot-container.ts-fade-in{animation:ts-fade-in .15s ease-in-out}
@keyframes ts-fade-in{from{opacity:0}to{opacity:1}}
.seat-header{display:flex;align-items:center;padding:8px 4px 10px;gap:8px;flex-wrap:wrap}
.seat-header-label{font-size:15px;color:#666}
/* 【v1.26.10】移除自定义座位编号功能：seat-name-text 不再可点击 */
.seat-name-text{font-size:17px;font-weight:700;color:#1890ff}
/* 隐藏时段有图片的文字提示 */
.hidden-ts-hint{font-size:12px;color:#fa8c16;max-width:60%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:8px;flex-shrink:1;min-width:0}

.timeslot-card{background:#fff;border-radius:8px;margin:6px 0;padding:6px 10px;box-shadow:0 1px 3px rgba(0,0,0,.08);cursor:pointer;display:flex;align-items:center;gap:6px;min-height:44px;flex-wrap:wrap}
.ts-top{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
.ts-checkbox{width:22px;height:22px;border-radius:50%;border:2px solid #bbb;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}
.ts-checkbox.checked{background:#1890ff;border-color:#1890ff}
.ts-checkbox.checked::after{content:'✓';color:#fff;font-size:14px;font-weight:700}
.ts-checkbox.disabled{border-color:#e0e0e0;background:#f5f5f5;cursor:not-allowed;opacity:.5}
.ts-time{font-size:15px;font-weight:600;color:#333;white-space:nowrap}
.ts-btns{display:flex;gap:4px;flex-shrink:0;margin-left:auto}
.ts-btn{padding:0 10px;font-size:13px;font-weight:600;border:none;border-radius:5px;cursor:pointer;transition:opacity .15s;min-height:36px;min-width:44px;display:flex;align-items:center;justify-content:center}
.ts-btn:active{opacity:.7}
.ts-btn-capture{background:#1890ff;color:#fff}
.ts-btn-upload{background:#52c41a;color:#fff}
.ts-btn:disabled{opacity:.4;cursor:not-allowed}
.ts-thumbs{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px;padding-left:28px;width:100%}
.thumb-wrap{position:relative;width:80px;height:80px;border-radius:6px;overflow:hidden;border:1px solid #e8e8e8;flex-shrink:0}
.thumb-wrap img{width:100%;height:100%;object-fit:cover;cursor:pointer;background:#f0f0f0}
.thumb-wrap img[data-thumb-src]:not([src]){min-width:80px;min-height:80px}
.thumb-del{position:absolute;top:-9px;right:-9px;width:44px;height:44px;border-radius:50%;cursor:pointer;z-index:var(--z-thumb-del);display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;line-height:1;background:transparent;border:none}
.thumb-del::before{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:22px;height:22px;border-radius:50%;background:rgba(0,0,0,.55);z-index:var(--z-thumb-del-before)}
.thumb-del:active::before{background:rgba(255,0,0,.7)}
/* 【v1.34.6】上传缩略图灰色占位块 + 转圈加载动画（纯CSS）
   占位块尺寸由父级 .thumb-wrap(80×80) 控制，自身填满父元素 */
.thumb-placeholder{position:absolute;inset:0;background:#e0e0e0;display:flex;align-items:center;justify-content:center;overflow:hidden}
.thumb-placeholder::before{content:'';width:22px;height:22px;border:2.5px solid #bdbdbd;border-top-color:transparent;border-radius:50%;animation:thumb-placeholder-spin .8s linear infinite}
@keyframes thumb-placeholder-spin{to{transform:rotate(360deg)}}

#bottom-bar{display:none;position:fixed;bottom:0;left:0;right:0;background:#fff;box-shadow:0 -2px 8px rgba(0,0,0,.12);padding:10px 12px;padding-bottom:calc(10px + constant(safe-area-inset-bottom));padding-bottom:calc(10px + env(safe-area-inset-bottom));z-index:var(--z-bottom-bar);max-width:480px;margin:0 auto;flex-wrap:wrap}
#bottom-bar.show{display:flex;align-items:center;gap:8px}
#selected-count{font-size:13px;color:#666;flex-shrink:0;white-space:nowrap}
#btn-clear-select{padding:8px 12px;font-size:13px;border:1px solid #d9d9d9;border-radius:6px;background:#fff;color:#666;cursor:pointer;flex-shrink:0}
/* 【v1.3.1 Bug1修复】拼接预览按钮文字适配，防止安卓端溢出 */
.bar-btn{padding:12px 8px;font-size:13px;font-weight:600;border:none;border-radius:8px;cursor:pointer;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.app-footer{text-align:center;padding:12px 0 16px;max-width:480px;margin:0 auto}
.app-footer .footer-title{font-size:12px;color:#999;font-weight:700;text-align:left;margin-bottom:4px;padding-left:16px}
.app-footer .footer-collapsible{font-size:12px;color:#999;font-weight:700;text-align:left;margin-bottom:4px;padding:14px 16px 2px;cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;user-select:none}
.app-footer .footer-collapsible-body{font-size:10px;color:#999;line-height:1.5;text-align:left;padding:0 16px;margin-bottom:6px;overflow:hidden;position:relative}
.app-footer .footer-collapsible-body.collapsed{max-height:3em}
.app-footer .footer-collapsible-body.collapsed::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1.5em;background:linear-gradient(transparent,var(--footer-fade-color,#f0f2f5));pointer-events:none}
.app-footer .footer-collapsible-body.expanded{max-height:none}
.app-footer .usage-guide{font-size:10px;color:#999;line-height:1.5;text-align:left;padding:0 16px;margin-bottom:6px}
.app-footer .disclaimer{font-size:10px;color:#999}
.app-footer .contact{font-size:9px;color:#999;margin-top:2px;transition:opacity .5s ease}
.app-footer .contact.hidden{opacity:0;height:0;margin:0;overflow:hidden}
.app-footer .version{font-size:11px;color:#aaa;margin-top:2px}
/* 【v1.39.8】备案悬挂：ICP 备案号 + 公安备案号（与 disclaimer 同灰色系，四主题通用） */
.app-footer .beian-info{font-size:10px;color:#999;margin-top:6px;line-height:1.7}
.app-footer .beian-info a{color:#999;text-decoration:none;display:inline-block;margin:0 5px;word-break:break-all}
.app-footer .beian-info a:active{opacity:.7}
/* 【v1.39.11】公安备案编号图标（官方要求放编号之前）：高度对齐 10px 小字，垂直居中 */
.app-footer .beian-info .beian-gongan-icon{height:12px;width:auto;vertical-align:-1px;margin-right:3px;border:0}
.bar-btn:active{opacity:.8}
#btn-download-separate{background:#1890ff;color:#fff;flex-shrink:0;min-width:auto}
#btn-download-concat{background:#fa8c16;color:#fff}
#btn-download-concat:disabled{background:#ccc;color:#999;cursor:not-allowed}
.concat-hint{font-size:11px;color:#999;width:100%;text-align:center;margin-top:2px}
/* 【v1.1.1 改造】拼接选择改为底部滑出面板 */
#concat-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:var(--z-panel-overlay)}
#concat-overlay.show{display:block}
#concat-sheet{position:fixed;left:0;right:0;bottom:0;background:#fff;border-radius:16px 16px 0 0;z-index:var(--z-panel);transform:translateY(100%);transition:transform .3s ease;max-height:75vh;display:flex;flex-direction:column;max-width:480px;margin:0 auto}
#concat-sheet.show{transform:translateY(0)}
#concat-sheet .sheet-header{display:flex;align-items:center;justify-content:center;padding:14px 20px 8px;flex-shrink:0}
#concat-sheet .sheet-title{font-size:15px;font-weight:600;color:#666}
#concat-sheet .sheet-handle{width:36px;height:4px;border-radius:2px;background:#ddd;margin:0 auto 8px}
#concat-sheet .concat-btns-simple{display:none;flex-direction:column;gap:10px;padding:8px 20px 24px;padding-bottom:calc(24px + constant(safe-area-inset-bottom));padding-bottom:calc(24px + env(safe-area-inset-bottom));flex-shrink:0}
#concat-sheet .concat-btns-simple button{width:100%;padding:14px;font-size:16px;font-weight:600;border:none;border-radius:10px;cursor:pointer;min-height:48px}
#concat-sheet .concat-btns-simple button:active{opacity:.8}
#concat-sheet .concat-btns-simple button:disabled{background:#ccc;color:#999;cursor:not-allowed}
#concat-sheet .concat-btns-simple .concat-h{background:#1890ff;color:#fff}
#concat-sheet .concat-btns-simple .concat-v{background:#722ed1;color:#fff}
/* 【v1.28.0】AI比对按钮：默认主题，渐变深色，区别于横拼/竖拼 */
#concat-sheet .concat-btns-simple .concat-ai{background:linear-gradient(135deg,#52c41a,#389e0d);color:#fff}
#concat-sheet .concat-btns-grid .concat-ai{background:linear-gradient(135deg,#52c41a,#389e0d);color:#fff;font-size:clamp(10px,3vw,13px);white-space:nowrap;padding-left:8px;padding-right:8px}
/* 【v1.28.1】AI比对按钮置灰状态（不使用disabled属性，以便点击触发提示） */
#concat-sheet .concat-ai.ai-disabled{background:#ccc;color:#999;cursor:not-allowed}
#concat-sheet .concat-grid{display:none;grid-template-columns:repeat(3,1fr);gap:8px;padding:4px 20px 8px;overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch;touch-action:manipulation;overscroll-behavior:contain}
#concat-sheet .concat-thumb{position:relative;aspect-ratio:1;border-radius:6px;overflow:hidden;border:2px solid transparent;cursor:pointer;background:#f5f5f5}
#concat-sheet .concat-thumb.selected{border-color:#1890ff}
#concat-sheet .concat-thumb.disabled{opacity:.4;cursor:not-allowed}
#concat-sheet .concat-thumb img{width:100%;height:100%;object-fit:cover;display:block}
/* 【v1.1.1】全屏图标替换"展开"文字 */
/* 【v1.3.1 Bug3修复】纯图标按钮：44×44px 点击热区，无多余背景，图标放大至 20px */
/* 【v1.9.33】全屏图标紧贴左下角，热区 44×44px 从边缘开始，图标在热区内靠左下对齐 */
#concat-sheet .concat-thumb .thumb-expand{position:absolute;left:0;bottom:0;width:44px;height:44px;background:transparent;border-radius:4px;cursor:pointer;z-index:var(--z-thumb-expand);display:flex;align-items:flex-end;justify-content:flex-start;padding:3px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
#concat-sheet .concat-thumb .thumb-expand svg{width:18px;height:18px;fill:rgba(255,255,255,.85);filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}
#concat-sheet .concat-thumb .thumb-check{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px}
#concat-sheet .concat-thumb.selected .thumb-check{background:#1890ff}
#concat-sheet .concat-btns-grid{display:none;gap:10px;padding:12px 20px 24px;padding-bottom:calc(24px + constant(safe-area-inset-bottom));padding-bottom:calc(24px + env(safe-area-inset-bottom));flex-shrink:0}
#concat-sheet .concat-btns-grid button{flex:1;padding:14px;font-size:16px;font-weight:600;border:none;border-radius:10px;cursor:pointer;min-height:48px}
#concat-sheet .concat-btns-grid button:active{opacity:.8}
#concat-sheet .concat-btns-grid button:disabled{background:#ccc;color:#999;cursor:not-allowed}
#concat-sheet .concat-btns-grid .concat-h{background:#1890ff;color:#fff}
#concat-sheet .concat-btns-grid .concat-v{background:#722ed1;color:#fff}

#preview-modal{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.92);z-index:var(--z-preview-modal);overflow:hidden;touch-action:none}
#preview-modal.show{display:block}
#preview-close{position:absolute;top:12px;right:16px;font-size:32px;color:#fff;cursor:pointer;z-index:var(--z-preview-close);width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.3);border-radius:50%}
#preview-scroller{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;will-change:transform}
.pv-slide{flex:0 0 100%;width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative}
.pv-slide img{max-width:100vw;max-height:100vh;max-height:100dvh;object-fit:contain;border-radius:4px;transform-origin:center center;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;pointer-events:none;will-change:transform;transition:opacity .15s ease-out}
.pv-slide img[data-decoding]{opacity:0}
/* 【v1.5.5】预览 loading spinner：高清源未就绪时显示 */
.pv-slide .pv-loading{position:absolute;width:36px;height:36px;border:3px solid rgba(255,255,255,.2);border-top-color:rgba(255,255,255,.6);border-radius:50%;animation:pv-spin .8s linear infinite;pointer-events:none}
@keyframes pv-spin{to{transform:rotate(360deg)}}
#preview-indicator{position:absolute;bottom:90px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.7);font-size:14px;pointer-events:none;z-index:var(--z-preview-floating)}
#preview-hint{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.4);font-size:12px;pointer-events:none;white-space:nowrap;padding:0 16px}
/* 【v1.28.0】AI比对结果展示区域：位于保存按钮上方，半透明卡片样式 */
#ai-compare-result{display:none;position:absolute;bottom:calc(110px + constant(safe-area-inset-bottom));bottom:calc(110px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:calc(100vw - 32px);max-width:420px;padding:14px 18px;background:rgba(0,0,0,.72);border-radius:12px;color:#fff;font-size:14px;line-height:1.6;z-index:var(--z-preview-floating);pointer-events:none;box-sizing:border-box;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
#ai-compare-result.show{display:block}
#ai-compare-result .ai-result-header{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:6px}
#ai-compare-result .ai-result-conclusion{font-size:16px;font-weight:600}
#ai-compare-result .ai-result-confidence{font-size:13px;padding:2px 8px;border-radius:10px;background:rgba(255,255,255,.2)}
#ai-compare-result .ai-result-tip{font-size:13px;color:rgba(255,255,255,.85);text-align:center}
#ai-compare-result.ai-loading .ai-result-conclusion{opacity:.7}
#ai-compare-result .ai-result-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:pv-spin .8s linear infinite;vertical-align:middle}

.modal-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:var(--z-modal-overlay);align-items:center;justify-content:center}
.modal-overlay.show{display:flex}
.modal-box{background:#fff;border-radius:12px;padding:20px 16px;width:92%;max-width:400px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);max-height:85vh;overflow-y:auto;overscroll-behavior:contain}
.modal-box h3{font-size:17px;margin-bottom:12px;text-align:center}
.modal-btns{display:flex;gap:10px;margin-top:16px}
.modal-btns button{flex:1;padding:12px;font-size:15px;font-weight:600;border:none;border-radius:8px;cursor:pointer}
.modal-btns button:active{opacity:.8}
.modal-cancel{background:#f0f0f0;color:#333}
.modal-cancel.disabled{opacity:.4;pointer-events:none}
.modal-confirm{background:#722ed1;color:#fff}

/* 【v1.35】关于弹窗：全屏卡片 + 标题/关闭 + 内容滚动（隐藏滚动条） */
/* 【v1.35.1】z-index 提升至 350，高于设置面板/筛选/批量下载等抽屉，避免被遮挡 */
#about-modal{z-index:var(--z-about-modal);align-items:stretch;justify-content:stretch}
/* 【v1.35.1】致谢信小尺寸居中弹窗模式（.about-modal-compact）：宽度 85%，最大高度 70vh */
#about-modal.about-modal-compact{align-items:center;justify-content:center}
#about-modal.about-modal-compact .about-modal-box{width:85%;max-width:400px;height:auto;max-height:70vh;border-radius:12px;padding:0}
.about-modal-box{background:#fff;width:100%;height:100%;max-width:480px;margin:0 auto;display:flex;flex-direction:column;overflow:hidden}
.about-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #f0f0f0;flex-shrink:0}
.about-modal-title{font-size:17px;font-weight:700;color:#1a1a1a}
.about-modal-close{width:36px;height:36px;border:none;background:#f5f5f5;border-radius:50%;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#999;min-width:44px;min-height:44px}
.about-modal-close:active{background:#e8e8e8}
.about-modal-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px 20px 24px;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior:contain}
.about-modal-body::-webkit-scrollbar{display:none}
.about-section{margin-bottom:18px}
.about-section:last-child{margin-bottom:0}
.about-section-title{font-size:14px;font-weight:700;color:#1a1a1a;margin-bottom:6px}
.about-section-body{font-size:13px;color:#555;line-height:1.7}
/* 关于菜单子选项列表（仿主题列表样式） */
.about-list{padding:0 0 4px;margin:0;list-style:none}
.about-list-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;margin:2px 0;border-radius:8px;cursor:pointer;font-size:14px;color:#333;transition:background .15s;-webkit-user-select:none;user-select:none}
.about-list-item:active{background:#f5f5f5}
.about-item-arrow{color:#bfbfbf;font-size:16px}

.batch-section{margin-bottom:12px}
.batch-section h4{font-size:14px;margin-bottom:8px;color:#666;display:flex;align-items:center;justify-content:space-between}
.batch-grid{display:flex;flex-wrap:wrap;gap:6px}
.batch-chip{padding:6px 12px;font-size:13px;border:1px solid #d9d9d9;border-radius:6px;background:#fff;cursor:pointer;user-select:none;transition:all .1s}
.batch-chip.checked{background:#722ed1;color:#fff;border-color:#722ed1}
.batch-chip:active{opacity:.7}
.batch-chip.disabled{opacity:.4;pointer-events:none}
.batch-select-all{padding:6px 12px;font-size:12px;border:1px dashed #722ed1;border-radius:6px;background:#fff;color:#722ed1;cursor:pointer}
.batch-select-all:active{opacity:.7}
.batch-select-all.disabled{opacity:.4;pointer-events:none}
.batch-progress{font-size:10px;color:#722ed1;font-weight:500;white-space:nowrap}

.picker-row{display:flex;gap:4px;margin-bottom:16px;height:160px;position:relative;background:#f5f5f5;border-radius:8px;overflow:hidden}
.picker-col{flex:1;height:100%;overflow-y:auto;scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch;position:relative}
.picker-col::-webkit-scrollbar{display:none}
.picker-pad{height:60px}
.picker-item{height:40px;line-height:40px;text-align:center;font-size:16px;scroll-snap-align:center;cursor:pointer;color:#666;transition:color .15s}
.picker-item.active{color:#1890ff;font-weight:700;font-size:18px}
.picker-highlight{position:absolute;top:60px;left:0;right:0;height:40px;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;background:rgba(24,144,255,.06);pointer-events:none;z-index:var(--z-picker-highlight)}
.picker-col-label{position:absolute;top:4px;width:100%;text-align:center;font-size:11px;color:#999;z-index:var(--z-picker-label);pointer-events:none}
.cleanup-btns{display:flex;gap:10px}
.cleanup-btns button{flex:1;padding:12px;font-size:15px;font-weight:600;border:none;border-radius:8px;cursor:pointer}
.cleanup-btns button:active{opacity:.8}
.cleanup-cancel{background:#f0f0f0;color:#333}
.cleanup-exec{background:#ff4d4f;color:#fff}
.cleanup-exec[disabled]{opacity:.5;cursor:not-allowed}
/* 【v1.5.11 新增】清理进度 spinner */
.cleanup-spinner{width:36px;height:36px;margin:0 auto;border:3px solid #e8e8e8;border-top-color:#1890ff;border-radius:50%;animation:cleanup-spin .8s linear infinite}
@keyframes cleanup-spin{to{transform:rotate(360deg)}}

/* 【v1.23.12】Toast 固定视口正中央：position:fixed + top/left:50% + transform:translate(-50%,-50%)，z-index:9999 确保最上层 */
/* 【v1.26.5】Toast 居中改用 inset:0+margin:auto，移除 transform:translate(-50%,-50%)
   根因：iOS Safari 在页面滚动时创建 position:fixed + transform 元素，fixed 定位会短暂失效，
   导致 Toast 随页面滑动移动一下再跳回视口中心。改用 inset:0+margin:auto 不依赖 transform，
   彻底避免该渲染 bug，且动画 keyframes 仅改 opacity 不影响位置。 */
.toast{position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;width:max-content;height:max-content;max-width:80vw;background:rgba(0,0,0,.75);color:#fff;padding:14px 28px;border-radius:8px;font-size:15px;z-index:var(--z-toast);pointer-events:none;animation:toast-fade 2s forwards}
@keyframes toast-fade{0%{opacity:1}70%{opacity:1}100%{opacity:0}}

/* 【v1.26.14】全局 Loading 提示组件（恢复操作等场景使用）
   - 半透明黑色遮罩覆盖全屏，居中显示转圈动画
   - z-index:10000 确保在所有弹窗之上
   - 使用 top:0;right:0;bottom:0;left:0;margin:auto 居中，规避 iOS Safari 的 transform fixed bug
   - 【v1.26.15 BUG修复】默认 pointer-events:none，.show 时才为 auto，
     防止 hideLoading 后遮罩虽不可见（opacity:0）但仍拦截点击导致页面无法操作 */
.global-loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:var(--z-loading);display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;transition:opacity .2s ease}
.global-loading-overlay.show{opacity:1;pointer-events:auto}
.global-loading-box{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 32px;background:rgba(0,0,0,.75);border-radius:12px}
.global-loading-spinner{width:36px;height:36px;border:3px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;animation:global-loading-spin .8s linear infinite}
.global-loading-text{color:#fff;font-size:14px;font-weight:500;letter-spacing:.5px}
@keyframes global-loading-spin{to{transform:rotate(360deg)}}
/* 主题适配 */
.theme-yiban .global-loading-box{background:rgba(30,30,38,.9);border:1px solid rgba(0,255,255,.2)}
.theme-yiban .global-loading-spinner{border-color:rgba(0,255,255,.25);border-top-color:#00ffff}
.theme-yiban .global-loading-text{color:#00ffff}
.theme-pixel .global-loading-box{background:#4a3728;border:3px solid #2d2d2d;border-radius:0}
.theme-pixel .global-loading-spinner{border-color:rgba(232,220,192,.25);border-top-color:#e8dcc0}
.theme-pixel .global-loading-text{color:#e8dcc0;font-family:'Courier New',monospace}

/* 时段筛选按钮 */
.btn-filter{background:#fa8c16;font-size:13px;padding:6px 12px;font-weight:600;border:none;border-radius:6px;color:#fff;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.btn-filter:active{opacity:.7}
.btn-filter .filter-icon{font-size:14px}

/* 筛选底部面板 */
.filter-sheet-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:var(--z-panel-overlay)}
.filter-sheet-overlay.show{display:block}
.filter-sheet{position:fixed;left:0;right:0;bottom:0;background:#fff;border-radius:16px 16px 0 0;z-index:var(--z-panel);transform:translateY(100%);transition:transform .3s ease;max-height:75vh;display:flex;flex-direction:column;max-width:480px;margin:0 auto}
.filter-sheet.show{transform:translateY(0)}
.filter-sheet-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0;flex-shrink:0}
.filter-sheet-title{font-size:17px;font-weight:700;color:#1a1a1a}
.filter-sheet-close{width:36px;height:36px;border:none;background:#f5f5f5;border-radius:50%;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#999}
.filter-sheet-close:active{background:#e8e8e8}
.filter-sheet-actions{display:flex;gap:8px;padding:12px 20px;border-bottom:1px solid #f0f0f0;flex-shrink:0}
.filter-action-btn{flex:1;padding:10px 0;font-size:13px;font-weight:600;border:1px solid #d9d9d9;border-radius:8px;background:#fff;color:#333;cursor:pointer;min-height:44px;display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden}
.filter-action-btn:active{background:#f5f5f5}
.filter-action-btn.primary{border-color:#1890ff;color:#1890ff;background:#e6f7ff}
.filter-action-btn.primary:active{background:#bae7ff}
.filter-clear-btn{flex:0 0 auto;min-width:52px;padding:10px 8px}
.filter-default-all{font-weight:400}
.filter-default-all .fa-default,.filter-default-all .fa-all{font-size:13px;font-weight:400}
.filter-default-all.state-default .fa-default{font-weight:700}
.filter-default-all.state-default .fa-all{font-size:11px;opacity:.6}
.filter-default-all.state-all .fa-all{font-weight:700}
.filter-default-all.state-all .fa-default{font-size:11px;opacity:.6}
.filter-sheet-body{overflow-y:auto;padding:8px 20px 24px;padding-bottom:calc(24px + constant(safe-area-inset-bottom));padding-bottom:calc(24px + env(safe-area-inset-bottom));flex:1;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.filter-slot-item{display:flex;align-items:center;padding:10px 0;min-height:44px;gap:12px;border-bottom:1px solid #f5f5f5;cursor:pointer}
.filter-slot-item:last-child{border-bottom:none}
.filter-slot-item:active{background:#fafafa}
.filter-slot-cb{width:22px;height:22px;border-radius:4px;border:2px solid #bbb;background:#fff;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .15s}
.filter-slot-cb.checked{background:#1890ff;border-color:#1890ff}
.filter-slot-cb.checked::after{content:'✓';color:#fff;font-size:14px;font-weight:700}
.filter-slot-label{font-size:15px;color:#333;font-weight:500;display:inline-flex;align-items:center;gap:3px;flex-shrink:0;flex-grow:0;flex-basis:auto}
.filter-slot-label.passed{color:#999}
/* 【v1.21.4】时段筛选面板：有图片的时段显示图标 */
.filter-slot-img-icon{width:14px;height:14px;flex-shrink:0;display:inline-block;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z'/%3E%3C/svg%3E") no-repeat center/contain;mask:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z'/%3E%3C/svg%3E") no-repeat center/contain;color:#1890ff;opacity:.7}
.theme-yiban .filter-slot-img-icon{color:#00cccc}
.theme-pixel .filter-slot-img-icon{color:#8b7355}

/* ============================================================
   【v1.6.0 新增】主题系统 - 主题选择列表样式
   ============================================================ */
.theme-list{padding:0 0 4px;margin:0;list-style:none}
.theme-list-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;margin:2px 0;border-radius:8px;cursor:pointer;font-size:14px;color:#333;transition:background .15s}
.theme-list-item:active{background:#f5f5f5}
.theme-list-item.active{background:rgba(24,144,255,.08);font-weight:600}
.theme-list-item .theme-check{width:20px;height:20px;border-radius:50%;border:2px solid #bbb;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}
.theme-list-item.active .theme-check{background:#1890ff;border-color:#1890ff}
.theme-list-item.active .theme-check::after{content:'✓';color:#fff;font-size:12px;font-weight:700}

/* ============================================================
   【v1.8.0 新增】"一般"主题 - 2046废土赛博朋克未来科技风格
   关键词：锈铁 / 霓虹 / 沙尘 / 暗沉 / 磨损 / 残破科技 / 末日光线
   色彩：铁灰 + 沙黄 + 霓虹青 #00ffff + 暗红 #cc3333 + 暗橙 #e8820c
   ============================================================ */
/* 全局底色：铁灰到沙黄渐变 + 裂痕纹理 */
/* 【v1.9.23】使用 repeating-linear-gradient 实现垂直镜像交替平铺，消除拼接痕迹 */
/* 【v1.9.24】背景改为纯垂直渐变 + repeating-linear-gradient 镜像交替平铺，消除斜向渐变拼接痕迹 */
html.theme-yiban{background:repeating-linear-gradient(180deg,#3c3c46 0%,#4a4540 15%,#5a5040 30%,#6a6050 50%,#5a5040 70%,#4a4540 85%,#3c3c46 100%);min-height:100%;background-size:100% 100vh;background-size:100% 100dvh}
.theme-yiban{background:transparent;color:#c8c8c8;--footer-fade-color:#5a5040}
/* 锈蚀金属纹理 + 扫描线（#app::before） */
.theme-yiban #app::before{content:'';position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:var(--z-bg-decor);background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(0,255,255,.015) 3px,rgba(0,255,255,.015) 4px),repeating-linear-gradient(90deg,transparent,transparent 80px,rgba(100,90,70,.06) 80px,rgba(100,90,70,.06) 81px),radial-gradient(ellipse 60% 40% at 30% 20%,rgba(0,255,255,.04) 0%,transparent 60%),radial-gradient(ellipse 50% 35% at 75% 70%,rgba(204,51,51,.03) 0%,transparent 55%)}
/* 【v1.9.29】.toast 保持 fixed 定位，仅 #app 提升 z-index */
.theme-yiban #app{position:relative;z-index:var(--z-app)}
/* 【v1.9.26】#bottom-bar 保持 fixed 定位，仅提升 z-index */
.theme-yiban #bottom-bar{z-index:var(--z-bottom-bar)}
/* 页面标题：霓虹青发光 */
.theme-yiban .page-header{background:linear-gradient(170deg,#3c3c46 0%,#4a4540 100%);position:relative;z-index:var(--z-page-header)}
.theme-yiban .page-title{font-family:'Segoe UI','Helvetica Neue',sans-serif;color:#00ffff;text-shadow:0 0 15px rgba(0,255,255,.5),0 0 5px rgba(0,255,255,.4);letter-spacing:2px;font-weight:700}
.theme-yiban .page-title small{color:#e8820c!important;text-shadow:none}
/* 【v1.27.0】LOGO 外框：蓝色主题霓虹边框 */
.theme-yiban .header-logo{border:1px solid rgba(0,255,255,.4);background:rgba(45,45,52,.6);border-radius:4px;box-shadow:0 0 6px rgba(0,255,255,.2)}
/* 菜单按钮：废土金属感 */
.theme-yiban .header-btn{background:linear-gradient(135deg,#4a4540,#3c3c46);border:1px solid rgba(0,255,255,.4);border-radius:4px;box-shadow:0 0 6px rgba(0,255,255,.2);color:#00ffff}
.theme-yiban .header-btn:active{box-shadow:0 0 12px rgba(0,255,255,.5);transform:scale(.97)}
/* 楼层卡片：锈蚀金属板 + 霓虹边框 */
.theme-yiban .floor-btn{font-family:'Segoe UI','Helvetica Neue',sans-serif;color:#00ffff;border:2px solid rgba(0,255,255,.5);border-radius:4px;box-shadow:0 0 8px rgba(0,255,255,.2),inset 0 0 20px rgba(0,0,0,.3);text-shadow:0 0 6px rgba(0,255,255,.3);transition:transform .12s,border-color .2s,box-shadow .2s}
.theme-yiban .floor-1{background:linear-gradient(135deg,rgba(60,60,70,.88),rgba(70,65,55,.88))}
.theme-yiban .floor-2{background:linear-gradient(135deg,rgba(55,60,68,.88),rgba(65,60,50,.88))}
.theme-yiban .floor-3{background:linear-gradient(135deg,rgba(58,55,65,.88),rgba(68,62,52,.88))}
.theme-yiban .floor-4{background:linear-gradient(135deg,rgba(62,58,60,.88),rgba(72,65,55,.88))}
.theme-yiban .floor-5{background:linear-gradient(135deg,rgba(56,58,68,.88),rgba(66,62,52,.88))}
.theme-yiban .floor-btn:hover{border-color:#00ffff;box-shadow:0 0 16px rgba(0,255,255,.4),inset 0 0 20px rgba(0,0,0,.3);transform:scale(1.01)}
.theme-yiban .floor-btn:active,.theme-yiban .floor-btn._pressing{transform:scale(.98)}
/* 区域按钮：铁灰 + 沙尘 + 霓虹橙边框 */
.theme-yiban .area-btn{font-family:'Segoe UI','Helvetica Neue',sans-serif;background:rgba(55,55,62,.88);border:1px solid rgba(232,130,12,.5);color:#e0d0b8;box-shadow:0 0 4px rgba(232,130,12,.15),inset 0 1px 3px rgba(0,0,0,.3);transition:background .12s,border-color .12s,box-shadow .12s;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.theme-yiban .area-btn:hover{border-color:#00ffff;box-shadow:0 0 8px rgba(0,255,255,.25),inset 0 1px 3px rgba(0,0,0,.3)}
.theme-yiban .area-btn:active,.theme-yiban .area-btn._pressing{transform:scale(.95)}
.theme-yiban .area-btn .area-seat-count,.theme-yiban .area-btn .area-stats{color:#e8820c}
.theme-yiban .area-btn.expanded{border-color:#00ffff;background:rgba(60,60,68,.92);box-shadow:0 0 10px rgba(0,255,255,.25)}
.theme-yiban .area-btn.has-images{border-color:#00cccc;background:linear-gradient(135deg,rgba(0,80,80,.35),rgba(55,55,62,.88));color:#00ffff}
.theme-yiban .area-btn.has-images.expanded{border-color:#00ffff;background:linear-gradient(135deg,rgba(0,80,80,.35),rgba(55,55,62,.88));color:#00ffff}
/* 【v1.12.1】记录完成时间按钮：霓虹橙胶囊 */
.theme-yiban .record-time-btn{font-family:'Segoe UI','Helvetica Neue',sans-serif;background:rgba(55,55,62,.88);border:1px solid rgba(232,130,12,.5);color:#e8820c;box-shadow:0 0 4px rgba(232,130,12,.15),inset 0 1px 3px rgba(0,0,0,.3);border-radius:20px}
.theme-yiban .record-time-btn:active,.theme-yiban .record-time-btn._pressing{transform:translateX(-50%) scale(.95);border-color:#00ffff;box-shadow:0 0 8px rgba(0,255,255,.25),inset 0 1px 3px rgba(0,0,0,.3)}
/* 【v1.11.0】楼层卡片完成时间：霓虹青文字 */
.theme-yiban .floor-completion{color:rgba(0,255,255,.7);text-shadow:0 0 4px rgba(0,255,255,.2)}
.theme-yiban .floor-completion.fixed{color:#e8820c;text-shadow:0 0 6px rgba(232,130,12,.3)}
/* 座位编号按钮：暗灰 + 全息网格 + 暗青边框 */
.theme-yiban .seat-btn{font-family:'Segoe UI','Helvetica Neue',sans-serif;background:rgba(45,45,52,.92);border:1px solid rgba(0,255,255,.2);color:#a0a8b0;font-size:12px;transition:background .1s,border-color .1s,box-shadow .1s}
.theme-yiban .seat-btn:hover{background:rgba(55,55,62,.92);border-color:rgba(0,255,255,.4)}
.theme-yiban .seat-btn:active,.theme-yiban .seat-btn._pressing{background:rgba(65,65,72,.92)}
.theme-yiban .seat-btn.expanded{border:2px solid #00ffff;background:rgba(45,45,52,.92);box-shadow:0 0 6px rgba(0,255,255,.25)}
/* 座位提示色保留，叠加霓虹光晕 */
.theme-yiban .seat-btn.has-images-1{border-color:#00aacc;background:linear-gradient(135deg,rgba(0,100,120,.4),rgba(45,45,52,.92));color:#00ffff;font-weight:700;box-shadow:0 0 8px rgba(0,170,204,.25)}
.theme-yiban .seat-btn.has-images-2{border-color:#cc6633;background:linear-gradient(135deg,rgba(120,60,20,.35),rgba(45,45,52,.92));color:#e8820c;font-weight:700;box-shadow:0 0 8px rgba(204,102,51,.2)}
.theme-yiban .seat-btn.has-images-1.expanded{border:2px solid #00ffff;background:linear-gradient(135deg,rgba(0,100,120,.4),rgba(45,45,52,.92));color:#00ffff}
.theme-yiban .seat-btn.has-images-2.expanded{border:2px solid #00ffff;background:linear-gradient(135deg,rgba(120,60,20,.35),rgba(45,45,52,.92));color:#e8820c}
/* 【v1.36】爱心/视障标识暗色背景适配 */
.theme-yiban .area-btn.aixin-area::before,.theme-yiban .seat-btn.aixin-seat::before,.theme-yiban .seat-btn.shizhang-seat::before{opacity:.18}
.theme-yiban .app-footer .usage-guide-divider{background:rgba(0,255,255,.12)}
/* 座位名称 */
.theme-yiban .seat-name-text{color:#00cccc}
.theme-yiban .seat-header-label{color:#00cccc}
.theme-yiban .hidden-ts-hint{color:#cc3333}
/* 时段卡片：暗铁灰 + 扫描线 */
.theme-yiban .timeslot-card{background:rgba(50,50,58,.92);border:1px solid rgba(0,255,255,.1);box-shadow:0 1px 4px rgba(0,0,0,.3)}
.theme-yiban .ts-time{color:#00cccc;font-family:'Segoe UI','Helvetica Neue',sans-serif}
/* 拍照/上传按钮 */
.theme-yiban .ts-btn-capture{background:#00888a}
.theme-yiban .ts-btn-upload{background:#8a5500}
/* 菜单面板：暗铁灰磨砂 + 霓虹分隔线 */
.theme-yiban .func-panel{background:rgba(45,45,52,.97);border-radius:10px 10px 0 0;box-shadow:0 -4px 20px rgba(0,0,0,.4),0 0 12px rgba(0,255,255,.1)}
.theme-yiban .func-panel-header{border-bottom:1px solid rgba(0,255,255,.2)}
.theme-yiban .func-panel-title{font-family:'Segoe UI','Helvetica Neue',sans-serif;color:#00ffff;text-shadow:0 0 8px rgba(0,255,255,.3)}
.theme-yiban .func-panel-close{background:rgba(204,51,51,.3);color:#cc3333}
.theme-yiban .func-item{border-bottom:1px dashed rgba(0,255,255,.15)}
.theme-yiban .func-item:active,.theme-yiban .func-item._pressing{background:rgba(0,255,255,.08);border-radius:4px}
.theme-yiban .func-item-label{font-family:'Segoe UI','Helvetica Neue',sans-serif;color:#c8c8c8}
.theme-yiban .func-item-label .func-item-desc{color:#888}
/* 开关按钮 */
.theme-yiban .func-toggle{background:#555}
.theme-yiban .func-toggle.on{background:#00888a;box-shadow:0 0 6px rgba(0,255,255,.3)}
/* 筛选面板 */
.theme-yiban .filter-sheet{background:rgba(45,45,52,.97);box-shadow:0 -4px 20px rgba(0,0,0,.4),0 0 12px rgba(0,255,255,.1)}
.theme-yiban .filter-sheet-header{border-bottom:1px solid rgba(0,255,255,.2)}
.theme-yiban .filter-sheet-title{font-family:'Segoe UI','Helvetica Neue',sans-serif;color:#00ffff;text-shadow:0 0 8px rgba(0,255,255,.3)}
.theme-yiban .filter-sheet-close{background:rgba(204,51,51,.3);color:#cc3333}
.theme-yiban .filter-sheet-actions{border-bottom:1px dashed rgba(0,255,255,.15)}
.theme-yiban .filter-action-btn{border-color:rgba(0,255,255,.3);color:#c8c8c8;font-family:'Segoe UI','Helvetica Neue',sans-serif}
.theme-yiban .filter-action-btn.primary{border-color:#00ffff;color:#00ffff;background:rgba(0,255,255,.08)}
.theme-yiban .filter-slot-item{border-bottom:1px dashed rgba(0,255,255,.1)}
.theme-yiban .filter-slot-label{color:#c8c8c8;font-family:'Segoe UI','Helvetica Neue',sans-serif}
/* 底部栏 */
.theme-yiban #bottom-bar{background:rgba(45,45,52,.97);box-shadow:0 -2px 10px rgba(0,0,0,.3),0 0 8px rgba(0,255,255,.08)}
.theme-yiban #selected-count{color:#00cccc}
.theme-yiban #btn-clear-select{border-color:rgba(0,255,255,.3);color:#cc3333;background:rgba(45,45,52,.8)}
.theme-yiban #btn-download-separate{background:#00888a;box-shadow:0 0 6px rgba(0,255,255,.2)}
.theme-yiban #btn-download-concat{background:#8a5500;box-shadow:0 0 6px rgba(232,130,12,.2)}
/* 弹窗 */
.theme-yiban .modal-box{background:rgba(45,45,52,.97);border:1px solid rgba(0,255,255,.2);box-shadow:0 4px 20px rgba(0,0,0,.4),0 0 12px rgba(0,255,255,.1)}
.theme-yiban .modal-box h3{font-family:'Segoe UI','Helvetica Neue',sans-serif;color:#00ffff;text-shadow:0 0 8px rgba(0,255,255,.3)}
.theme-yiban .modal-cancel{background:rgba(80,80,88,.8);color:#c8c8c8}
.theme-yiban .modal-confirm{background:#00888a;box-shadow:0 0 6px rgba(0,255,255,.2)}
/* 【v1.12.5】记录完成时间确认弹窗 */
.theme-yiban .record-confirm-box{background:rgba(45,45,52,.97);border:1px solid rgba(0,255,255,.2);box-shadow:0 4px 20px rgba(0,0,0,.4),0 0 12px rgba(0,255,255,.1)}
.theme-yiban .record-confirm-text{font-family:'Segoe UI','Helvetica Neue',sans-serif;color:#e0d0b8}
.theme-yiban .record-confirm-cancel{background:rgba(80,80,88,.8);color:#c8c8c8;border:1px solid rgba(0,255,255,.15);border-radius:4px}
.theme-yiban .record-confirm-ok{background:#00888a;box-shadow:0 0 6px rgba(0,255,255,.2);border-radius:4px}
.theme-yiban .record-confirm-delete{background:rgba(139,32,32,.9);color:#ffb3b3;border:1px solid rgba(255,80,80,.35);border-radius:4px;box-shadow:0 0 6px rgba(255,80,80,.2)}
/* 【v1.9.10 修复】蓝色主题下重置/清理进度弹窗文字不可见 */
.theme-yiban #cleanup-loading-text{color:#00ffff!important}
/* 批量下载弹窗 */
.theme-yiban .batch-chip{border-color:rgba(0,255,255,.2);color:#c8c8c8;font-family:'Segoe UI','Helvetica Neue',sans-serif}
.theme-yiban .batch-chip.checked{background:#00888a;color:#fff;border-color:#00cccc;box-shadow:0 0 6px rgba(0,255,255,.2)}
.theme-yiban .batch-select-all{border-color:#00cccc;color:#00cccc}
/* 拼接面板 */
.theme-yiban #concat-sheet{background:rgba(45,45,52,.97)}
.theme-yiban #concat-sheet .sheet-title{font-family:'Segoe UI','Helvetica Neue',sans-serif;color:#00ffff;text-shadow:0 0 6px rgba(0,255,255,.3)}
.theme-yiban #concat-sheet .sheet-handle{background:rgba(0,255,255,.25)}
/* 【v1.9.32】拼接按钮：使用 #concat-sheet 提升优先级，覆盖默认蓝紫配色 */
.theme-yiban #concat-sheet .concat-h{background:#00888a;color:#fff;font-family:'Segoe UI','Helvetica Neue',sans-serif;border:2px solid rgba(0,255,255,.5);border-radius:4px;box-shadow:0 0 8px rgba(0,255,255,.2),inset 0 0 20px rgba(0,0,0,.3);text-shadow:0 0 6px rgba(0,255,255,.3)}
.theme-yiban #concat-sheet .concat-v{background:#8a5500;color:#fff;font-family:'Segoe UI','Helvetica Neue',sans-serif;border:2px solid rgba(255,170,0,.5);border-radius:4px;box-shadow:0 0 8px rgba(255,170,0,.2),inset 0 0 20px rgba(0,0,0,.3);text-shadow:0 0 6px rgba(255,170,0,.3)}
.theme-yiban #concat-sheet .concat-h:active,.theme-yiban #concat-sheet .concat-h._pressing{transform:scale(.98);box-shadow:0 0 4px rgba(0,255,255,.3),inset 0 0 20px rgba(0,0,0,.3)}
.theme-yiban #concat-sheet .concat-v:active,.theme-yiban #concat-sheet .concat-v._pressing{transform:scale(.98);box-shadow:0 0 4px rgba(255,170,0,.3),inset 0 0 20px rgba(0,0,0,.3)}
/* 【v1.28.0】AI比对按钮：yiban主题，赛博绿色霓虹 */
.theme-yiban #concat-sheet .concat-ai{background:#2d5a2d;color:#00ff88;font-family:'Segoe UI','Helvetica Neue',sans-serif;border:2px solid rgba(0,255,136,.5);border-radius:4px;box-shadow:0 0 8px rgba(0,255,136,.2),inset 0 0 20px rgba(0,0,0,.3);text-shadow:0 0 6px rgba(0,255,136,.3)}
.theme-yiban #concat-sheet .concat-ai:active{transform:scale(.98);box-shadow:0 0 4px rgba(0,255,136,.3),inset 0 0 20px rgba(0,0,0,.3)}
.theme-yiban #concat-sheet .concat-h:disabled,.theme-yiban #concat-sheet .concat-v:disabled{background:rgba(45,45,52,.8);color:#555;border-color:rgba(0,255,255,.1);box-shadow:none;text-shadow:none;cursor:not-allowed}
.theme-yiban #concat-sheet button:disabled,.theme-yiban #concat-sheet .concat-ai.ai-disabled{background:rgba(45,45,52,.8);color:#555;border-color:rgba(0,255,255,.1);box-shadow:none;text-shadow:none;cursor:not-allowed}
.theme-yiban #concat-sheet .concat-thumb{border-radius:2px;border-color:rgba(0,255,255,.15);background:rgba(30,30,38,.9)}
.theme-yiban #concat-sheet .concat-thumb.selected{border-color:#00ffff;box-shadow:0 0 6px rgba(0,255,255,.3)}
.theme-yiban #concat-sheet .concat-thumb.selected .thumb-check{background:#00888a}
/* 【v1.9.32】保存图片按钮：霓虹青发光 */
.theme-yiban #preview-save-btn{background:rgba(0,136,138,.9);font-family:'Segoe UI','Helvetica Neue',sans-serif;border:2px solid rgba(0,255,255,.5);border-radius:4px;box-shadow:0 0 12px rgba(0,255,255,.3),inset 0 0 20px rgba(0,0,0,.3);text-shadow:0 0 6px rgba(0,255,255,.3)}
.theme-yiban #preview-save-btn:active{opacity:.85}
/* 缩略图 */
.theme-yiban .thumb-wrap{border-color:rgba(0,255,255,.15)}
.theme-yiban .thumb-placeholder{background:rgba(45,45,52,.9)}
.theme-yiban .thumb-placeholder::before{border-color:#00cccc;border-top-color:transparent}
/* 新增/删除座位 */
.theme-yiban .add-seat-btn{border-color:rgba(0,255,255,.2);color:#888;background:rgba(45,45,52,.6)}
.theme-yiban .add-seat-btn:active{background:rgba(0,255,255,.08);border-color:#00cccc;color:#00cccc}
.theme-yiban .btn-delete-seat{border-color:#cc3333;color:#cc3333}
/* Toast */
.theme-yiban .toast{background:rgba(30,30,38,.9);border:1px solid rgba(0,255,255,.2)}
/* 更新提示条 */
.theme-yiban .update-bar{background:linear-gradient(135deg,#00888a,#cc3333)}
/* 清理弹窗按钮 */
.theme-yiban .cleanup-cancel{background:rgba(80,80,88,.8);color:#c8c8c8}
.theme-yiban .cleanup-exec{background:#cc3333;box-shadow:0 0 6px rgba(204,51,51,.3)}
/* 【v1.8.1 修复】主题选择列表文字在暗色背景下不可见 */
.theme-yiban .theme-list-item{color:#e0e0e0}
.theme-yiban .theme-list-item:active{background:rgba(0,255,255,.08)}
.theme-yiban .theme-list-item.active{background:rgba(0,255,255,.1)}
.theme-yiban .theme-list-item .theme-check{border-color:#666}
.theme-yiban .theme-list-item.active .theme-check{background:#00cccc;border-color:#00cccc}
/* 【v1.35】关于弹窗 + 子选项列表 */
.theme-yiban .about-modal-box{background:rgba(45,45,52,.97);box-shadow:0 0 20px rgba(0,0,0,.5)}
.theme-yiban .about-modal-header{border-bottom:1px solid rgba(0,255,255,.2)}
.theme-yiban .about-modal-title{color:#00ffff;text-shadow:0 0 8px rgba(0,255,255,.3)}
.theme-yiban .about-modal-close{background:rgba(204,51,51,.3);color:#cc3333}
.theme-yiban .about-section-title{color:#00ffff}
.theme-yiban .about-section-body{color:#c8c8c8}
.theme-yiban .about-list-item{color:#e0e0e0}
.theme-yiban .about-list-item:active{background:rgba(0,255,255,.08)}
.theme-yiban .about-item-arrow{color:#666}

/* ============================================================
   【v1.9.0 新增】"像素"主题 - 16位像素风格（参考《我的世界》）
   关键词：方块 / 像素 / 泥土棕 / 草地绿 / 石材灰 / 木板米黄 / 矿石蓝金
   描边：4px 实线直角 + 黑色像素描边（box-shadow 硬阴影）
   悬停：像素位移按压效果 translate(2px,2px) + shadow 缩短
   ============================================================ */
/* 全局底色：MC 天空淡蓝到草地绿渐变 + 像素点阵纹理 */
/* 【v1.9.23】使用 repeating-linear-gradient 实现垂直镜像交替平铺，消除拼接痕迹 */
html.theme-pixel{background:repeating-linear-gradient(180deg,#7ec8e8 0%,#a8d8a8 30%,#7ec850 50%,#a8d8a8 70%,#7ec8e8 100%);min-height:100%;background-size:100% 100vh;background-size:100% 100dvh}
.theme-pixel{background:transparent;color:#4a3728;--footer-fade-color:#a8d8a8}
/* 像素点阵纹理（#app::before） */
.theme-pixel #app::before{content:'';position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:var(--z-bg-decor);background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(0,0,0,.02) 3px,rgba(0,0,0,.02) 4px),repeating-linear-gradient(90deg,transparent,transparent 3px,rgba(0,0,0,.02) 3px,rgba(0,0,0,.02) 4px)}
/* 【v1.9.29】.toast 保持 fixed 定位，仅 #app 提升 z-index */
.theme-pixel #app{position:relative;z-index:var(--z-app)}
.theme-pixel #bottom-bar{z-index:var(--z-bottom-bar)}
/* 页面标题：像素风 + 硬阴影 */
.theme-pixel .page-header{background:linear-gradient(180deg,#7ec8e8 0%,#a8d8a8 100%);position:relative;z-index:var(--z-page-header)}
.theme-pixel .page-title{font-family:'Courier New',monospace;color:#3e2b1f;letter-spacing:1px;font-weight:900;text-shadow:2px 2px 0 #e0d7c5}
.theme-pixel .page-title small{color:#ffaa00!important}
/* 【v1.27.0】LOGO 外框：怀旧主题像素描边 */
.theme-pixel .header-logo{border:2px solid #5a3d2b;background:#c8a96e;border-radius:0;box-shadow:2px 2px 0 #2d2d2d}
/* 菜单按钮：木板材质 + 像素描边 */
.theme-pixel .header-btn{background:#c8a96e;border:4px solid #5a3d2b;border-radius:0;box-shadow:4px 4px 0 #2d2d2d;color:#4a3728;font-family:'Courier New',monospace;font-weight:700;transition:transform .08s,box-shadow .08s}
.theme-pixel .header-btn:active{transform:translate(2px,2px);box-shadow:2px 2px 0 #2d2d2d}
/* 楼层卡片：木板/工作台材质 + 像素描边 + 按压效果 */
.theme-pixel .floor-btn{font-family:'Courier New',monospace;color:#4a3728;border:4px solid #5a3d2b;border-radius:0;box-shadow:4px 4px 0 #2d2d2d;font-weight:700;transition:transform .08s,box-shadow .08s}
.theme-pixel .floor-1{background:linear-gradient(135deg,#c8a96e,#b89858);background-image:repeating-linear-gradient(90deg,transparent,transparent 8px,rgba(90,61,43,.08) 8px,rgba(90,61,43,.08) 10px),linear-gradient(135deg,#c8a96e,#b89858)}
.theme-pixel .floor-2{background:linear-gradient(135deg,#b8a058,#a89048);background-image:repeating-linear-gradient(90deg,transparent,transparent 8px,rgba(90,61,43,.08) 8px,rgba(90,61,43,.08) 10px),linear-gradient(135deg,#b8a058,#a89048)}
.theme-pixel .floor-3{background:linear-gradient(135deg,#c0a060,#b09050);background-image:repeating-linear-gradient(90deg,transparent,transparent 8px,rgba(90,61,43,.08) 8px,rgba(90,61,43,.08) 10px),linear-gradient(135deg,#c0a060,#b09050)}
.theme-pixel .floor-4{background:linear-gradient(135deg,#d0b070,#c0a060);background-image:repeating-linear-gradient(90deg,transparent,transparent 8px,rgba(90,61,43,.08) 8px,rgba(90,61,43,.08) 10px),linear-gradient(135deg,#d0b070,#c0a060)}
.theme-pixel .floor-5{background:linear-gradient(135deg,#baa060,#aa9048);background-image:repeating-linear-gradient(90deg,transparent,transparent 8px,rgba(90,61,43,.08) 8px,rgba(90,61,43,.08) 10px),linear-gradient(135deg,#baa060,#aa9048)}
.theme-pixel .floor-btn:hover{background-color:#d8b978;box-shadow:4px 4px 0 #2d2d2d}
.theme-pixel .floor-btn:active,.theme-pixel .floor-btn._pressing{transform:translate(2px,2px);box-shadow:2px 2px 0 #2d2d2d}
/* 【v1.34.1】怀旧主题 expanded 态：模拟游戏按钮按下，上面一层下压 + 阴影层缩小，保持像素双层结构 */
.theme-pixel .floor-btn.expanded{transform:translate(2px,2px);box-shadow:2px 2px 0 #2d2d2d}
/* 区域按钮：石材材质 + 像素描边 */
.theme-pixel .area-btn{font-family:'Courier New',monospace;background:#aaa;border:3px solid #555;border-radius:0;box-shadow:3px 3px 0 #2d2d2d;color:#3a3a3a;font-weight:700;transition:transform .08s,box-shadow .08s;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.theme-pixel .area-btn:hover{background:#bbb}
.theme-pixel .area-btn:active,.theme-pixel .area-btn._pressing{transform:translate(2px,2px);box-shadow:1px 1px 0 #2d2d2d}
.theme-pixel .area-btn .area-seat-count,.theme-pixel .area-btn .area-stats{color:#555;font-size:9px;overflow:hidden}
.theme-pixel .area-btn.expanded{border-color:#5a3d2b;background:#b8b8b8}
.theme-pixel .area-btn.has-images{border-color:#7ec850;background:linear-gradient(135deg,#8dd850,#7ec850);color:#3a5a1a}
.theme-pixel .area-btn.has-images.expanded{border-color:#5a3d2b;background:linear-gradient(135deg,#8dd850,#7ec850);color:#3a5a1a}
/* 【v1.12.1】记录完成时间按钮：像素风药丸 */
.theme-pixel .record-time-btn{font-family:'Courier New',monospace;background:#d8d8d8;border:2px solid #888;border-radius:0;box-shadow:2px 2px 0 #2d2d2d;color:#3a3a3a;font-weight:700}
.theme-pixel .record-time-btn:active,.theme-pixel .record-time-btn._pressing{transform:translateX(-50%) translate(2px,2px);box-shadow:1px 1px 0 #2d2d2d}
/* 【v1.11.0】楼层卡片完成时间：像素风深色文字 */
.theme-pixel .floor-completion{color:rgba(74,55,40,.8)}
.theme-pixel .floor-completion.fixed{color:#5a3d2b}
.theme-pixel .floor-completion .fc-time{font-weight:700}
.theme-pixel .floor-completion.s1{font-size:13px}
.theme-pixel .floor-completion.s2{font-size:11px}
.theme-pixel .floor-completion.s3{font-size:10px}
/* 座位编号按钮：铁块/石英材质 + 像素描边 */
.theme-pixel .seat-btn{font-family:'Courier New',monospace;background:#d8d8d8;border:2px solid #888;border-radius:0;box-shadow:2px 2px 0 #2d2d2d;color:#3a3a3a;font-size:11px;font-weight:700;transition:transform .08s,box-shadow .08s}
.theme-pixel .seat-btn .icon-hidden{position:absolute;top:2px;left:4px;z-index:var(--z-seat-icon)}
.theme-pixel .seat-btn .icon-hidden svg{filter:drop-shadow(1px 0 0 #333) drop-shadow(-1px 0 0 #333) drop-shadow(0 1px 0 #333) drop-shadow(0 -1px 0 #333)}
.theme-pixel .seat-btn .icon-filter-hit{position:absolute;top:2px;right:6px;z-index:var(--z-seat-icon)}
.theme-pixel .seat-btn .icon-filter-hit svg{filter:drop-shadow(1px 0 0 #333) drop-shadow(-1px 0 0 #333) drop-shadow(0 1px 0 #333) drop-shadow(0 -1px 0 #333)}
.theme-pixel .seat-btn:hover{background:#e0e0e0}
.theme-pixel .seat-btn:active,.theme-pixel .seat-btn._pressing{transform:translate(1px,1px);box-shadow:1px 1px 0 #2d2d2d}
.theme-pixel .seat-btn.expanded{border:3px solid #5a3d2b;background:#d8d8d8;box-shadow:3px 3px 0 #2d2d2d}
/* 座位提示色：MC 钻石蓝 / 金橙 / 草绿 + 像素描边 */
.theme-pixel .seat-btn.has-images-1{border-color:#5bc0de;background:#5bc0de;color:#1a4a5a;font-weight:700;box-shadow:2px 2px 0 #2d2d2d}
.theme-pixel .seat-btn.has-images-2{border-color:#f0ad4e;background:#f0ad4e;color:#5a3a0a;font-weight:700;box-shadow:2px 2px 0 #2d2d2d}
.theme-pixel .seat-btn.has-images-1.expanded{border:3px solid #5a3d2b;background:#5bc0de;color:#1a4a5a;box-shadow:3px 3px 0 #2d2d2d}
.theme-pixel .seat-btn.has-images-2.expanded{border:3px solid #5a3d2b;background:#f0ad4e;color:#5a3a0a;box-shadow:3px 3px 0 #2d2d2d}
/* 【v1.36】爱心/视障标识分隔线适配 */
.theme-pixel .app-footer .usage-guide-divider{background:rgba(74,55,40,.15)}
/* 【v1.20.13】安卓端座位按钮缩小字号，避免宽字体换行 */
.android-device .seat-btn{font-size:11.5px;height:40px;padding:0 8px;flex-shrink:0;flex-grow:0;position:relative}
.android-device:not(.theme-yiban):not(.theme-pixel):not(.theme-metal) .seat-btn{height:42px}
.android-device.theme-yiban .seat-btn{font-size:11.5px}
.android-device.theme-pixel .seat-btn{font-size:10.5px}
/* 座位名称 */
.theme-pixel .seat-name-text{color:#5a3d2b}
.theme-pixel .seat-header-label{color:#5a3d2b}
.theme-pixel .hidden-ts-hint{color:#cc3333}
/* 时段卡片：浅米黄 + 像素边框 */
.theme-pixel .timeslot-card{background:#e8dcc0;border:2px solid #8b7355;border-radius:0;box-shadow:2px 2px 0 #2d2d2d}
.theme-pixel .ts-time{color:#4a3728;font-family:'Courier New',monospace;font-weight:700}
/* 拍照/上传按钮 */
.theme-pixel .ts-btn-capture{background:#7ec850;border:2px solid #5a8a30;border-radius:0;box-shadow:2px 2px 0 #2d2d2d}
.theme-pixel .ts-btn-upload{background:#c8a96e;border:2px solid #8b7355;border-radius:0;box-shadow:2px 2px 0 #2d2d2d}
/* 菜单面板：箱子/背包界面 - 米黄底 + 厚边框 + 像素描边 */
.theme-pixel .func-panel{background:#c8a96e;border-radius:0;box-shadow:0 -4px 0 #5a3d2d,0 -6px 0 #2d2d2d}
.theme-pixel .func-panel-header{border-bottom:4px solid #5a3d2b}
.theme-pixel .func-panel-title{font-family:'Courier New',monospace;color:#4a3728;font-weight:900}
.theme-pixel .func-panel-close{background:#8b7355;color:#fff;border:2px solid #5a3d2b;border-radius:0;box-shadow:2px 2px 0 #2d2d2d}
.theme-pixel .func-item{border-bottom:2px dashed #8b7355}
.theme-pixel .func-item:active,.theme-pixel .func-item._pressing{background:rgba(90,61,43,.15)}
.theme-pixel .func-item-label{font-family:'Courier New',monospace;color:#4a3728;font-weight:700}
.theme-pixel .func-item-label .func-item-desc{color:#8b7355}
/* 开关按钮 */
.theme-pixel .func-toggle{background:#888;border-radius:0}
.theme-pixel .func-toggle.on{background:#7ec850;box-shadow:inset 0 0 0 2px #5a8a30}
/* 筛选面板 */
.theme-pixel .filter-sheet{background:#c8a96e;border-radius:0;box-shadow:0 -4px 0 #5a3d2d,0 -6px 0 #2d2d2d}
.theme-pixel .filter-sheet-header{border-bottom:4px solid #5a3d2b}
.theme-pixel .filter-sheet-title{font-family:'Courier New',monospace;color:#4a3728;font-weight:900}
.theme-pixel .filter-sheet-close{background:#8b7355;color:#fff;border:2px solid #5a3d2b;border-radius:0;box-shadow:2px 2px 0 #2d2d2d}
.theme-pixel .filter-sheet-actions{border-bottom:2px dashed #8b7355}
.theme-pixel .filter-action-btn{border:2px solid #8b7355;border-radius:0;color:#4a3728;font-family:'Courier New',monospace;font-weight:700}
.theme-pixel .filter-action-btn.primary{border-color:#5a3d2b;color:#5a3d2b;background:rgba(90,61,43,.1)}
.theme-pixel .filter-slot-item{border-bottom:2px dashed #8b7355}
.theme-pixel .filter-slot-label{color:#4a3728;font-family:'Courier New',monospace}
/* 底部栏 */
.theme-pixel #bottom-bar{background:#c8a96e;border-top:4px solid #5a3d2b;box-shadow:0 -4px 0 #2d2d2d}
.theme-pixel #selected-count{color:#5a3d2b;font-weight:700}
.theme-pixel #btn-clear-select{border:2px solid #8b7355;border-radius:0;color:#5a3d2b;background:#e8dcc0}
.theme-pixel #btn-download-separate{background:#7ec850;border:2px solid #5a8a30;border-radius:0;box-shadow:2px 2px 0 #2d2d2d;color:#3a5a1a}
.theme-pixel #btn-download-concat{background:#c8a96e;border:2px solid #8b7355;border-radius:0;box-shadow:2px 2px 0 #2d2d2d;color:#4a3728}
/* 弹窗 */
.theme-pixel .modal-box{background:#c8a96e;border:4px solid #5a3d2b;border-radius:0;box-shadow:6px 6px 0 #2d2d2d}
.theme-pixel .modal-box h3{font-family:'Courier New',monospace;color:#4a3728;font-weight:900}
.theme-pixel .modal-cancel{background:#aaa;border:2px solid #555;border-radius:0;color:#3a3a3a}
.theme-pixel .modal-confirm{background:#7ec850;border:2px solid #5a8a30;border-radius:0;color:#3a5a1a}
/* 【v1.12.5】记录完成时间确认弹窗 */
.theme-pixel .record-confirm-box{background:#c8a96e;border:4px solid #5a3d2b;border-radius:0;box-shadow:6px 6px 0 #2d2d2d}
.theme-pixel .record-confirm-text{font-family:'Courier New',monospace;color:#4a3728;font-weight:700}
.theme-pixel .record-confirm-cancel{background:#aaa;border:2px solid #555;border-radius:0;color:#3a3a3a;font-weight:700}
.theme-pixel .record-confirm-ok{background:#7ec850;border:2px solid #5a8a30;border-radius:0;color:#3a5a1a;font-weight:700}
.theme-pixel .record-confirm-delete{background:#e05555;border:2px solid #8a2d2d;border-radius:0;color:#fff;font-weight:700}
/* 批量下载弹窗 */
.theme-pixel .batch-chip{border:2px solid #8b7355;border-radius:0;color:#4a3728;font-family:'Courier New',monospace}
.theme-pixel .batch-chip.checked{background:#7ec850;color:#3a5a1a;border-color:#5a8a30}
.theme-pixel .batch-select-all{border:2px solid #5a3d2b;color:#5a3d2b;border-radius:0}
/* 拼接面板 */
.theme-pixel #concat-sheet{background:#c8a96e}
.theme-pixel #concat-sheet .sheet-title{font-family:'Courier New',monospace;color:#4a3728;font-weight:900}
.theme-pixel #concat-sheet .sheet-handle{background:#8b7355}
/* 【v1.9.32】拼接按钮：使用 #concat-sheet 提升优先级，覆盖默认蓝紫配色 */
.theme-pixel #concat-sheet .concat-h{background:#7ec850;color:#3a5a1a;font-family:'Courier New',monospace;font-weight:700;border:3px solid #5a8a30;border-radius:0;box-shadow:3px 3px 0 #2d2d2d}
.theme-pixel #concat-sheet .concat-v{background:#8b7355;color:#f0e8d0;font-family:'Courier New',monospace;font-weight:700;border:3px solid #5a3d2b;border-radius:0;box-shadow:3px 3px 0 #2d2d2d}
.theme-pixel #concat-sheet .concat-h:active,.theme-pixel #concat-sheet .concat-h._pressing{transform:translate(2px,2px);box-shadow:1px 1px 0 #2d2d2d}
.theme-pixel #concat-sheet .concat-v:active,.theme-pixel #concat-sheet .concat-v._pressing{transform:translate(2px,2px);box-shadow:1px 1px 0 #2d2d2d}
/* 【v1.28.0】AI比对按钮：pixel主题，像素绿色 */
.theme-pixel #concat-sheet .concat-ai{background:#5a8a30;color:#e0f8d0;font-family:'Courier New',monospace;font-weight:700;border:3px solid #4a7a20;border-radius:0;box-shadow:3px 3px 0 #2d2d2d}
.theme-pixel #concat-sheet .concat-ai:active{transform:translate(2px,2px);box-shadow:1px 1px 0 #2d2d2d}
.theme-pixel #concat-sheet .concat-h:disabled,.theme-pixel #concat-sheet .concat-v:disabled{background:#999;color:#666;border-color:#777;box-shadow:none;cursor:not-allowed}
.theme-pixel #concat-sheet button:disabled,.theme-pixel #concat-sheet .concat-ai.ai-disabled{background:#999;color:#666;border-color:#777;box-shadow:none;cursor:not-allowed}
.theme-pixel #concat-sheet .concat-thumb{border-radius:0;border:2px solid #8b7355;background:#b89858}
.theme-pixel #concat-sheet .concat-thumb.selected{border-color:#7ec850;box-shadow:2px 2px 0 #2d2d2d}
.theme-pixel #concat-sheet .concat-thumb.selected .thumb-check{background:#7ec850}
/* 【v1.9.32】保存图片按钮：像素风硬阴影 */
.theme-pixel #preview-save-btn{background:#7ec850;color:#3a5a1a;font-family:'Courier New',monospace;font-weight:700;border:3px solid #5a8a30;border-radius:0;box-shadow:3px 3px 0 #2d2d2d}
.theme-pixel #preview-save-btn:active{transform:translateX(-50%) translate(2px,2px);box-shadow:1px 1px 0 #2d2d2d}
/* 缩略图 */
.theme-pixel .thumb-wrap{border-color:#8b7355}
.theme-pixel .thumb-placeholder{background:#4a3728}
.theme-pixel .thumb-placeholder::before{border-color:#c9a96e;border-top-color:transparent}
/* 新增/删除座位 */
.theme-pixel .add-seat-btn{border:2px solid #8b7355;border-radius:0;color:#8b7355;background:rgba(200,169,110,.5)}
.theme-pixel .add-seat-btn:active{background:rgba(200,169,110,.8);border-color:#5a3d2b;color:#5a3d2b}
.theme-pixel .btn-delete-seat{border:2px solid #cc3333;border-radius:0;color:#cc3333}
/* Toast */
.theme-pixel .toast{background:#4a3728;border:3px solid #2d2d2d;border-radius:0;color:#e8dcc0;font-family:'Courier New',monospace}
/* 更新提示条 */
.theme-pixel .update-bar{background:#7ec850;border-bottom:3px solid #5a8a30;color:#3a5a1a;font-family:'Courier New',monospace;font-weight:700}
/* 清理弹窗按钮 */
.theme-pixel .cleanup-cancel{background:#aaa;border:2px solid #555;border-radius:0;color:#3a3a3a}
.theme-pixel .cleanup-exec{background:#cc3333;border:2px solid #991a1a;border-radius:0;color:#fff}
/* 主题选择列表：像素风 */
.theme-pixel .theme-list-item{color:#4a3728;font-family:'Courier New',monospace;font-weight:700;border-radius:0}
.theme-pixel .theme-list-item:active{background:rgba(90,61,43,.15)}
.theme-pixel .theme-list-item.active{background:#7ec850;border:2px solid #5a8a30}
.theme-pixel .theme-list-item .theme-check{border-radius:0;border:2px solid #5a3d2b}
.theme-pixel .theme-list-item.active .theme-check{background:#7ec850;border-color:#5a8a30}
/* 【v1.35】关于弹窗 + 子选项列表 */
.theme-pixel .about-modal-box{background:#c8a96e;border-radius:0;box-shadow:0 -4px 0 #5a3d2d,0 -6px 0 #2d2d2d}
/* 【v1.35.1】怀旧主题 compact 模式保持方角，提升特异性覆盖默认 12px */
.theme-pixel #about-modal.about-modal-compact .about-modal-box{border-radius:0}
.theme-pixel .about-modal-header{border-bottom:4px solid #5a3d2b}
.theme-pixel .about-modal-title{font-family:'Courier New',monospace;color:#4a3728;font-weight:900}
.theme-pixel .about-modal-close{background:#8b7355;color:#fff;border:2px solid #5a3d2b;border-radius:0;box-shadow:2px 2px 0 #2d2d2d}
.theme-pixel .about-section-title{font-family:'Courier New',monospace;color:#4a3728;font-weight:900}
.theme-pixel .about-section-body{font-family:'Courier New',monospace;color:#3d2e1f}
.theme-pixel .about-list-item{color:#4a3728;font-family:'Courier New',monospace;font-weight:700;border-radius:0}
.theme-pixel .about-list-item:active{background:rgba(90,61,43,.15)}
.theme-pixel .about-item-arrow{color:#5a3d2b}

/* ============================================================
   【v1.34.0 新增】"金属"主题 - 暗黑奇幻重金属哥特风
   色彩：深色底 + 香槟金(#c9a96e/#d4af37)镶边 + 各楼层暗色渐变
   纹理：多层 box-shadow + border 堆叠模拟金属质感
   字体：硬朗无衬线体，亮金/白色文字
   ============================================================ */
/* 全局底色：深黑渐变 + 微妙金属纹理 */
html.theme-metal{background:#0d0d0d;background-image:repeating-linear-gradient(45deg,transparent,transparent 2px,rgba(201,169,110,.015) 2px,rgba(201,169,110,.015) 4px),radial-gradient(ellipse at 50% 0%,rgba(201,169,110,.06) 0%,transparent 60%);min-height:100%;background-size:100% 100vh,100% 100%}
.theme-metal{background:transparent;color:#e8d5b0;--footer-fade-color:#1a1a1a}
.theme-metal #app::before{content:'';position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:var(--z-bg-decor);background:radial-gradient(ellipse 60% 40% at 50% 100%,rgba(201,169,110,.04) 0%,transparent 70%)}
.theme-metal #app{position:relative;z-index:var(--z-app)}
.theme-metal #bottom-bar{z-index:var(--z-bottom-bar)}
/* 页面标题：金色粗体 + 金属质感 */
.theme-metal .page-header{background:linear-gradient(180deg,#1a1a1a 0%,#0d0d0d 100%);border-bottom:1px solid rgba(201,169,110,.3);position:relative;z-index:var(--z-page-header)}
.theme-metal .page-title{color:#d4af37;font-weight:800;letter-spacing:1px;text-shadow:0 0 8px rgba(212,175,55,.3)}
.theme-metal .page-title small{color:#8a7a5a!important}
.theme-metal .header-logo{border:1px solid #c9a96e;border-radius:4px;background:rgba(20,20,20,.6);box-shadow:0 0 4px rgba(201,169,110,.2)}
/* 菜单按钮：暗金金属牌 */
.theme-metal .header-btn{background:linear-gradient(135deg,#3a3a3a 0%,#1a1a1a 100%);border:1px solid #c9a96e;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.5),inset 0 1px 0 rgba(201,169,110,.3);color:#d4af37;font-weight:700}
.theme-metal .header-btn:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.6);transform:scale(.97)}
/* 楼层卡片：各楼层暗色渐变 + 香槟金多层镶边 */
.theme-metal .floor-btn{font-family:'Segoe UI','Helvetica Neue',sans-serif;color:#e8d5b0;font-weight:700;border:1px solid #c9a96e;border-radius:5px;box-shadow:0 2px 6px rgba(0,0,0,.5),inset 0 1px 0 rgba(201,169,110,.4),inset 0 0 0 1px rgba(0,0,0,.3);transition:transform .2s ease-in-out,box-shadow .2s ease-in-out,background .2s ease-in-out}
.theme-metal .floor-1{background:linear-gradient(135deg,#8b0000 0%,#4a0000 100%)}
.theme-metal .floor-2{background:linear-gradient(135deg,#8b7500 0%,#4a3500 100%)}
.theme-metal .floor-3{background:linear-gradient(135deg,#00008b 0%,#00004a 100%)}
.theme-metal .floor-4{background:linear-gradient(135deg,#006400 0%,#003200 100%)}
.theme-metal .floor-5{background:linear-gradient(135deg,#4b0082 0%,#2d004a 100%)}
.theme-metal .floor-btn:hover{box-shadow:0 4px 12px rgba(201,169,110,.3),inset 0 1px 0 rgba(201,169,110,.5)}
.theme-metal .floor-btn:active,.theme-metal .floor-btn._pressing{transform:scale(.98)}
.theme-metal .floor-btn.expanded{box-shadow:inset 0 3px 6px rgba(0,0,0,.6),inset 0 -1px 2px rgba(0,0,0,.3),0 0 0 1px #c9a96e;transform:scale(.99)}
/* 区域按钮：暗色金属面板 */
.theme-metal .area-btn{font-family:'Segoe UI','Helvetica Neue',sans-serif;background:linear-gradient(135deg,#2a2a2a 0%,#1a1a1a 100%);border:1px solid #c9a96e;color:#e8d5b0;box-shadow:0 1px 3px rgba(0,0,0,.5),inset 0 1px 0 rgba(201,169,110,.2);transition:background .2s ease-in-out,border-color .2s ease-in-out,box-shadow .2s ease-in-out;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;border-radius:4px}
.theme-metal .area-btn:active,.theme-metal .area-btn._pressing{transform:scale(.95)}
.theme-metal .area-btn.expanded{border-color:#d4af37;background:linear-gradient(135deg,#1a1a1a 0%,#0d0d0d 100%);box-shadow:inset 0 2px 4px rgba(0,0,0,.6),0 0 6px rgba(212,175,55,.3)}
.theme-metal .area-btn.has-images{border:1px solid #d4af37;background:linear-gradient(135deg,#2a2a1a 0%,#1a1a0d 100%);color:#d4af37}
.theme-metal .area-btn.has-images.expanded{border-color:#d4af37;background:linear-gradient(135deg,#1a1a0d 0%,#0d0d06 100%);box-shadow:inset 0 2px 4px rgba(0,0,0,.6),0 0 6px rgba(212,175,55,.4)}
/* 座位按钮：暗色金属格子 */
.theme-metal .seat-btn{font-family:'Segoe UI','Helvetica Neue',sans-serif;background:linear-gradient(135deg,#2a2a2a 0%,#1a1a1a 100%);border:1px solid #5a5a5a;color:#c8c8c8;font-size:12px;border-radius:4px;transition:background .2s ease-in-out,border-color .2s ease-in-out,box-shadow .2s ease-in-out}
.theme-metal .seat-btn:active,.theme-metal .seat-btn._pressing{background:linear-gradient(135deg,#1a1a1a 0%,#0d0d0d 100%)}
.theme-metal .seat-btn.expanded{border:1px solid #d4af37;background:linear-gradient(135deg,#1a1a1a 0%,#0d0d0d 100%);box-shadow:inset 0 2px 4px rgba(0,0,0,.6),0 0 4px rgba(212,175,55,.3)}
.theme-metal .seat-btn.has-images-1{border-color:#7a8a6a;background:linear-gradient(135deg,#2a3a1a 0%,#1a2a0d 100%);color:#a8c870;font-weight:700}
.theme-metal .seat-btn.has-images-2{border-color:#b8860b;background:linear-gradient(135deg,#3a2a0a 0%,#2a1a04 100%);color:#d4af37;font-weight:700}
.theme-metal .seat-btn.has-images-1.expanded{border:1px solid #d4af37;background:linear-gradient(135deg,#1a2a0d 0%,#0d1506 100%);box-shadow:inset 0 2px 4px rgba(0,0,0,.6),0 0 4px rgba(212,175,55,.3)}
.theme-metal .seat-btn.has-images-2.expanded{border:1px solid #d4af37;background:linear-gradient(135deg,#2a1a04 0%,#150d02 100%);box-shadow:inset 0 2px 4px rgba(0,0,0,.6),0 0 4px rgba(212,175,55,.3)}
/* 【v1.36】爱心/视障标识暗色背景适配 */
.theme-metal .area-btn.aixin-area::before,.theme-metal .seat-btn.aixin-seat::before,.theme-metal .seat-btn.shizhang-seat::before{opacity:.18}
.theme-metal .app-footer .usage-guide-divider{background:rgba(201,169,110,.15)}
/* 记录时间按钮 */
/* 【v1.37.4】香槟金配色（原灰边灰字），与金属主题统一：暗色半透明底+金边金字+5px圆角，:active 暗金反馈+内阴影凹陷 */
.theme-metal .record-time-btn{background:rgba(20,20,20,.85);border:1px solid #c9a96e;color:#d4af37;border-radius:5px}
.theme-metal .record-time-btn:active,.theme-metal .record-time-btn._pressing{background:rgba(201,169,110,.15);box-shadow:inset 0 2px 4px rgba(0,0,0,.6)}
/* 【v1.37.4】记录完成时间确认弹窗（原遗漏金属适配）：容器同 modal-box 惯例，取消暗底金边、确认亮金渐变深字 */
.theme-metal .record-confirm-box{background:linear-gradient(180deg,#1a1a1a 0%,#0d0d0d 100%);border:1px solid #c9a96e;border-radius:5px;box-shadow:0 0 30px rgba(0,0,0,.7)}
.theme-metal .record-confirm-text{color:#b0b0b0}
.theme-metal .record-confirm-cancel{background:linear-gradient(135deg,#3a3a3a 0%,#1a1a1a 100%);border:1px solid #c9a96e;color:#c8c8c8;border-radius:4px}
.theme-metal .record-confirm-cancel:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.6)}
.theme-metal .record-confirm-ok{background:linear-gradient(135deg,#d4af37 0%,#b8860b 100%);border:1px solid #d4af37;color:#1a1a1a;border-radius:4px;box-shadow:0 0 6px rgba(212,175,55,.3)}
.theme-metal .record-confirm-ok:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.6)}
.theme-metal .record-confirm-delete{background:linear-gradient(135deg,#8a1f1f 0%,#4a0f0f 100%);border:1px solid #d46565;color:#ffd6d6;border-radius:4px;box-shadow:0 0 6px rgba(212,80,80,.25)}
.theme-metal .record-confirm-delete:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.6)}
/* 时段卡片 */
.theme-metal .timeslot-card{background:linear-gradient(135deg,#1a1a1a 0%,#0d0d0d 100%);border:1px solid rgba(201,169,110,.3);border-radius:5px;box-shadow:0 1px 4px rgba(0,0,0,.5)}
.theme-metal .ts-header{border-bottom:1px solid rgba(201,169,110,.2)}
.theme-metal .ts-time{color:#d4af37;font-weight:700}
.theme-metal .ts-btn-capture,.theme-metal .ts-btn-upload{background:linear-gradient(135deg,#3a3a3a 0%,#1a1a1a 100%);border:1px solid #c9a96e;color:#d4af37;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.4)}
.theme-metal .ts-btn-capture:active,.theme-metal .ts-btn-upload:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.6)}
.theme-metal .ts-btn-restore{background:linear-gradient(135deg,#3a2a0a 0%,#1a1a04 100%);border:1px solid #b8860b;color:#d4af37}
/* 缩略图 */
.theme-metal .thumb-wrap{border:1px solid rgba(201,169,110,.4);border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.5)}
.theme-metal .thumb-placeholder{background:#1a1a1a}
.theme-metal .thumb-placeholder::before{border-color:#c9a96e;border-top-color:transparent}
/* 【v1.34.1】删除按钮背景透明，避免红色填满44px热区形成红色外圈；仅 ::before 显示金属暗红圆形 */
.theme-metal .thumb-del{background:transparent;border:none}
.theme-metal .thumb-del::before{background:rgba(204,51,51,.9);border:1px solid #991a1a;box-shadow:0 0 4px rgba(0,0,0,.5)}
.theme-metal .thumb-del:active::before{background:rgba(255,68,68,.95)}
/* 新增/删除座位 */
.theme-metal .add-seat-btn{border:1px dashed #c9a96e;color:#c9a96e;background:rgba(20,20,20,.6);border-radius:4px}
.theme-metal .add-seat-btn:active{background:rgba(201,169,110,.15);border-color:#d4af37;color:#d4af37}
.theme-metal .btn-delete-seat{border:1px solid #cc3333;color:#cc3333}
/* 底部栏 */
.theme-metal #bottom-bar{background:linear-gradient(180deg,#1a1a1a 0%,#0d0d0d 100%);border-top:1px solid #c9a96e;box-shadow:0 -2px 8px rgba(0,0,0,.5)}
.theme-metal #bottom-bar #selected-count{color:#c8c8c8}
.theme-metal .bar-btn{background:linear-gradient(135deg,#3a3a3a 0%,#1a1a1a 100%);border:1px solid #c9a96e;color:#d4af37;border-radius:4px}
.theme-metal .bar-btn:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.6)}
/* 功能面板 */
.theme-metal .func-panel{background:linear-gradient(180deg,#1a1a1a 0%,#0d0d0d 100%);border:1px solid #c9a96e;box-shadow:0 0 20px rgba(0,0,0,.6)}
.theme-metal .func-panel-header{border-bottom:1px solid rgba(201,169,110,.3)}
.theme-metal .func-panel-title{color:#d4af37;font-weight:800}
.theme-metal .func-panel-close{color:#c9a96e}
.theme-metal .func-item{border-bottom:1px solid rgba(201,169,110,.15)}
/* 【v1.34.1】设置面板选项点击反馈改暗金色，避免暗色主题下白色反馈刺眼 */
.theme-metal .func-item:active,.theme-metal .func-item._pressing{background:rgba(201,169,110,.12);border-radius:4px}
.theme-metal .func-item-label{color:#e8d5b0}
.theme-metal .func-item-desc{color:#8a7a5a}
.theme-metal .func-toggle{background:#2a2a2a;border:1px solid #5a5a5a}
.theme-metal .func-toggle.on{background:linear-gradient(135deg,#b8860b 0%,#8b6508 100%);border-color:#d4af37;box-shadow:0 0 6px rgba(212,175,55,.4)}
/* 主题选择列表：金属风 */
.theme-metal .theme-list-item{color:#e8d5b0;border-radius:4px}
.theme-metal .theme-list-item:active{background:rgba(201,169,110,.1)}
.theme-metal .theme-list-item.active{background:rgba(212,175,55,.15);border:1px solid #c9a96e}
.theme-metal .theme-list-item .theme-check{border:1px solid #5a5a5a;border-radius:4px}
.theme-metal .theme-list-item.active .theme-check{background:linear-gradient(135deg,#d4af37 0%,#b8860b 100%);border-color:#d4af37}
/* 【v1.35】关于弹窗 + 子选项列表 */
.theme-metal .about-modal-box{background:linear-gradient(180deg,#1a1a1a 0%,#0d0d0d 100%);border-left:1px solid #c9a96e;border-right:1px solid #c9a96e;box-shadow:0 0 30px rgba(0,0,0,.7)}
/* 【v1.35.1】compact 模式：4 边完整香槟金边框 + 5px 圆角，与金属主题 modal-box 风格一致 */
.theme-metal #about-modal.about-modal-compact .about-modal-box{border:1px solid #c9a96e;border-radius:5px}
.theme-metal .about-modal-header{border-bottom:1px solid rgba(201,169,110,.3)}
.theme-metal .about-modal-title{color:#d4af37;text-shadow:0 0 6px rgba(212,175,55,.25)}
.theme-metal .about-modal-close{background:linear-gradient(135deg,#2a2a2a 0%,#1a1a1a 100%);border:1px solid #c9a96e;color:#d4af37;border-radius:4px;box-shadow:0 0 6px rgba(0,0,0,.5)}
.theme-metal .about-modal-close:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.6)}
.theme-metal .about-section-title{color:#d4af37}
.theme-metal .about-section-body{color:#b0b0b0;line-height:1.7}
.theme-metal .about-list-item{color:#c8c8c8;border-radius:4px}
.theme-metal .about-list-item:active{background:rgba(201,169,110,.12)}
.theme-metal .about-item-arrow{color:#c9a96e}
/* 模态弹窗 */
.theme-metal .modal-box{background:linear-gradient(180deg,#1a1a1a 0%,#0d0d0d 100%);border:1px solid #c9a96e;border-radius:5px;box-shadow:0 0 30px rgba(0,0,0,.7)}
.theme-metal .modal-box h3{color:#d4af37}
.theme-metal .modal-cancel{background:linear-gradient(135deg,#3a3a3a 0%,#1a1a1a 100%);border:1px solid #5a5a5a;color:#c8c8c8;border-radius:4px}
.theme-metal .modal-confirm,.theme-metal .cleanup-exec{background:linear-gradient(135deg,#b8860b 0%,#8b6508 100%);border:1px solid #d4af37;color:#fff;border-radius:4px;box-shadow:0 0 6px rgba(212,175,55,.3)}
/* 拼接面板 */
.theme-metal #concat-sheet{background:linear-gradient(180deg,#1a1a1a 0%,#0d0d0d 100%);border-top:1px solid #c9a96e}
.theme-metal .sheet-title{color:#d4af37}
/* 【v1.34.1】用 #concat-sheet 作用域提升特异性，覆盖默认主题的蓝色/紫色背景 */
.theme-metal #concat-sheet .concat-h,.theme-metal #concat-sheet .concat-v{background:linear-gradient(135deg,#3a3a3a 0%,#1a1a1a 100%);border:1px solid #c9a96e;color:#d4af37;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.5),inset 0 1px 0 rgba(201,169,110,.2);font-weight:700}
.theme-metal #concat-sheet .concat-h:active,.theme-metal #concat-sheet .concat-h._pressing,.theme-metal #concat-sheet .concat-v:active,.theme-metal #concat-sheet .concat-v._pressing{box-shadow:inset 0 2px 4px rgba(0,0,0,.6);transform:scale(.98)}
.theme-metal #concat-sheet .concat-ai{background:linear-gradient(135deg,#3a2a0a 0%,#1a1a04 100%);border:1px solid #b8860b;color:#d4af37;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.5),inset 0 1px 0 rgba(184,134,11,.2);font-weight:700}
.theme-metal #concat-sheet .concat-ai:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.6);transform:scale(.98)}
.theme-metal #concat-sheet .concat-ai.ai-disabled,.theme-metal #concat-sheet .concat-h:disabled,.theme-metal #concat-sheet .concat-v:disabled{background:linear-gradient(135deg,#2a2a2a 0%,#1a1a1a 100%);color:#5a5a5a;border-color:#3a3a3a;box-shadow:none;cursor:not-allowed}
/* 筛选面板 */
.theme-metal .filter-sheet{background:linear-gradient(180deg,#1a1a1a 0%,#0d0d0d 100%);border-top:1px solid #c9a96e}
.theme-metal .filter-sheet-title{color:#d4af37}
.theme-metal .filter-action-btn{background:linear-gradient(135deg,#2a2a2a 0%,#1a1a1a 100%);border:1px solid #5a5a5a;color:#c8c8c8;border-radius:4px}
/* 【v1.35】金属主题时段筛选按钮激活亮起效果（.primary 类），参考其他主题用香槟金边框+文字+半透明背景 */
.theme-metal .filter-action-btn.primary{background:linear-gradient(135deg,rgba(201,169,110,.18) 0%,rgba(212,175,55,.08) 100%);border:1px solid #c9a96e;color:#d4af37;box-shadow:0 0 6px rgba(201,169,110,.35),inset 0 0 4px rgba(212,175,55,.15)}
.theme-metal .filter-action-btn:active{background:linear-gradient(135deg,#1a1a1a 0%,#0d0d0d 100%);box-shadow:inset 0 2px 4px rgba(0,0,0,.6)}
.theme-metal .filter-action-btn.primary:active{background:linear-gradient(135deg,rgba(201,169,110,.25) 0%,rgba(212,175,55,.12) 100%);box-shadow:inset 0 2px 4px rgba(0,0,0,.6),0 0 6px rgba(201,169,110,.35)}
/* Toast */
.theme-metal .toast{background:linear-gradient(135deg,#1a1a1a 0%,#0d0d0d 100%);border:1px solid #c9a96e;color:#d4af37;border-radius:4px;box-shadow:0 0 10px rgba(0,0,0,.6)}
/* 更新提示条 */
.theme-metal .update-bar{background:linear-gradient(135deg,#b8860b 0%,#8b6508 100%);border-bottom:1px solid #d4af37;color:#fff;font-weight:700}
/* 全局Loading */
.theme-metal .global-loading-box{background:linear-gradient(180deg,#1a1a1a 0%,#0d0d0d 100%);border:1px solid #c9a96e;box-shadow:0 0 15px rgba(0,0,0,.6)}
.theme-metal .global-loading-text{color:#d4af37}
/* 【v1.34.3】多楼层概览：提升特异性覆盖默认主题 .floor-N 渐变背景 */
.theme-metal .multi-floor-block,.theme-metal .multi-floor-block.floor-1,.theme-metal .multi-floor-block.floor-2,.theme-metal .multi-floor-block.floor-3,.theme-metal .multi-floor-block.floor-4,.theme-metal .multi-floor-block.floor-5{background:rgba(20,20,20,.85);border:1px solid #c9a96e;border-radius:5px;box-shadow:0 2px 6px rgba(0,0,0,.6),inset 0 1px 0 rgba(201,169,110,.3)}
.theme-metal .multi-floor-block .multi-floor-name,.theme-metal .multi-floor-block.floor-1 .multi-floor-name,.theme-metal .multi-floor-block.floor-2 .multi-floor-name,.theme-metal .multi-floor-block.floor-3 .multi-floor-name,.theme-metal .multi-floor-block.floor-4 .multi-floor-name,.theme-metal .multi-floor-block.floor-5 .multi-floor-name{color:#d4af37;text-shadow:0 0 4px rgba(0,0,0,.8)}
.theme-metal .multi-floor-block .multi-area-name,.theme-metal .multi-floor-block.floor-1 .multi-area-name,.theme-metal .multi-floor-block.floor-2 .multi-area-name,.theme-metal .multi-floor-block.floor-3 .multi-area-name,.theme-metal .multi-floor-block.floor-4 .multi-area-name,.theme-metal .multi-floor-block.floor-5 .multi-area-name{color:#c9a96e}
.theme-metal .multi-floor-block .multi-floor-slots{color:rgba(201,169,110,.6)}
/* 预览模态 */
.theme-metal #preview-modal{background:rgba(0,0,0,.92)}
.theme-metal #preview-hint{color:rgba(201,169,110,.6)}
/* 筛选图标颜色 */
.theme-metal .filter-slot-img-icon{color:#c9a96e}
/* 回收站浏览器 */
.theme-metal .trash-browser-row.selected{background:rgba(201,169,110,.12)}
.theme-metal .trash-browser-row.drag-origin{outline-color:#d4af37;background:rgba(201,169,110,.12)}
.theme-metal .trash-browser-checkbox.checked{background:linear-gradient(135deg,#d4af37 0%,#b8860b 100%);border-color:#d4af37}
.theme-metal .trash-browser-thumb-wrap{border:1px solid rgba(201,169,110,.4)}
/* 【v1.34.4】回收站面板文字对比度修复：trash-browser-box 同时有 modal-box 类，金属主题下背景为暗色，原 #333/#999 不可读 */
.theme-metal .trash-browser-name{color:#d4af37}
.theme-metal .trash-browser-size{color:#b0b0b0}
.theme-metal .trash-browser-desc{color:#b0b0b0}
.theme-metal .trash-browser-row{border-bottom-color:rgba(201,169,110,.15)}
/* 【v1.12.0】骨架屏加载动画 */
@keyframes skeleton-shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
.skeleton-screen{position:fixed;top:0;left:0;right:0;bottom:0;padding:0 16px;background:#f0f2f5;z-index:var(--z-skeleton);animation:skeleton-fadein .2s ease;overflow-y:auto;padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}
@keyframes skeleton-fadein{from{opacity:0}to{opacity:1}}
.skeleton-header{display:flex;justify-content:space-between;align-items:center;padding:14px 0;margin-bottom:8px}
.skeleton-header-title{width:140px;height:22px;border-radius:4px;background:linear-gradient(90deg,#e8e8e8 25%,#f5f5f5 50%,#e8e8e8 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite}
.skeleton-header-btn{width:50px;height:32px;border-radius:6px;background:linear-gradient(90deg,#e8e8e8 25%,#f5f5f5 50%,#e8e8e8 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite}
.skeleton-floor{width:100%;height:54px;border-radius:10px;margin:8px 0;background:linear-gradient(90deg,#e8e8e8 25%,#f5f5f5 50%,#e8e8e8 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite}
.skeleton-footer{margin-top:24px;padding:0 4px}
.skeleton-footer-line{height:12px;border-radius:3px;margin:6px 0;background:linear-gradient(90deg,#e8e8e8 25%,#f5f5f5 50%,#e8e8e8 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite}
.skeleton-footer-line:nth-child(1){width:60%}
.skeleton-footer-line:nth-child(2){width:80%}
.skeleton-footer-line:nth-child(3){width:45%}

/* ============================================================
   【v1.21.0】第二种显示模式：多图模式
   ============================================================ */

/* 楼层卡片切换动画 */
#app.mode-hiding{pointer-events:none}
#app .floor-btn,#app .area-container,#app .app-footer{transition:opacity .3s ease-in-out,transform .3s ease-in-out}
#app.mode-hiding .floor-btn,#app.mode-hiding .area-container,#app.mode-hiding .app-footer{opacity:0;transform:scale(.95) translateY(-10px)}
#app.mode-hidden .floor-btn,#app.mode-hidden .area-container,#app.mode-hidden .app-footer{display:none}
/* 【v1.21.4】切回默认模式：淡入+上滑，仅opacity和transform */
#app.mode-fadein .floor-btn,#app.mode-fadein .area-container,#app.mode-fadein .app-footer{opacity:0;transform:translateY(10px);transition:opacity .3s ease-in-out,transform .3s ease-in-out}
#app.mode-fadein .floor-btn:not(.expanded)+.area-container{display:none}
#app.mode-fadein .area-container:not(.show){display:none}

/* 轻微闪烁呼吸效果（仅多图模式下生效） */
.page-title.sword-light{animation:title-breath 2.5s ease-in-out infinite;color:#000}
.theme-yiban .page-title.sword-light{color:#00ffff}
.theme-pixel .page-title.sword-light{color:#3e2b1f}
/* 【v1.34.3】金属主题第二种显示模式标题颜色适配（sword-light 覆盖默认金色） */
.theme-metal .page-title.sword-light{color:#d4af37}
@keyframes title-breath{0%,100%{opacity:1}50%{opacity:.85}}

/* 多图模式：标题可点击 */
.page-title.mode-toggle{cursor:pointer;pointer-events:auto!important;-webkit-tap-highlight-color:transparent}

/* 标题组：标题+提示小字 */
.title-group{display:flex;flex-direction:column;align-items:flex-start}
/* 小字提示（两种模式均显示） */
.mode-hint{font-size:11px;color:#999;margin-top:0;line-height:1.2}

/* 第二种模式：时段筛选按钮 */
.btn-filter-multi{background:#1890ff}
.btn-filter-multi:active,.btn-filter-multi._pressing{opacity:.7}

/* 多图模式楼层色块 - 紧凑布局 */
.multi-floor-block{border-radius:10px;padding:8px 6px;margin:0 0 8px;position:relative}
/* 默认主题：使用与楼层卡片相同的渐变色 */
.multi-floor-block.floor-1{background:linear-gradient(135deg,#667eea,#764ba2);border:none;box-shadow:0 2px 8px rgba(102,126,234,.3)}
.multi-floor-block.floor-2{background:linear-gradient(135deg,#f093fb,#f5576c);border:none;box-shadow:0 2px 8px rgba(245,87,108,.3)}
.multi-floor-block.floor-3{background:linear-gradient(135deg,#4facfe,#00f2fe);border:none;box-shadow:0 2px 8px rgba(79,172,254,.3)}
.multi-floor-block.floor-4{background:linear-gradient(135deg,#43e97b,#38f9d7);border:none;box-shadow:0 2px 8px rgba(67,233,123,.3)}
.multi-floor-block.floor-5{background:linear-gradient(135deg,#fa709a,#fee140);border:none;box-shadow:0 2px 8px rgba(250,112,154,.3)}
.multi-floor-block.floor-1 .multi-floor-name,.multi-floor-block.floor-2 .multi-floor-name,.multi-floor-block.floor-3 .multi-floor-name,.multi-floor-block.floor-4 .multi-floor-name,.multi-floor-block.floor-5 .multi-floor-name{color:#fff}
.multi-floor-block.floor-1 .multi-area-name,.multi-floor-block.floor-2 .multi-area-name,.multi-floor-block.floor-3 .multi-area-name,.multi-floor-block.floor-4 .multi-area-name,.multi-floor-block.floor-5 .multi-area-name{color:rgba(255,255,255,.85)}
/* 蓝色主题覆盖 */
.theme-yiban .multi-floor-block{background:rgba(35,35,42,.94);border:1px solid rgba(0,255,255,.15);box-shadow:0 0 8px rgba(0,255,255,.06)}
.theme-yiban .multi-floor-block .multi-floor-name{color:#00cccc}
.theme-yiban .multi-floor-block .multi-area-name{color:#e8820c}
/* 怀旧主题覆盖 */
.theme-pixel .multi-floor-block{background:#e8dcc0;border:2px solid #8b7355;box-shadow:2px 2px 0 #2d2d2d;border-radius:0}
.theme-pixel .multi-floor-block .multi-floor-name{color:#3e2b1f;font-family:'Courier New',monospace}
.theme-pixel .multi-floor-block .multi-area-name{color:#5a3d2b;font-family:'Courier New',monospace}

/* 多图模式楼层名 */
/* 【v1.29.0】新增 multi-floor-header：楼层名+时段文字同一行，时段文字可横向滑动 */
.multi-floor-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.multi-floor-name{font-size:16px;font-weight:700;color:#333;flex-shrink:0}
.multi-floor-slots{flex:1;min-width:0;overflow-x:auto;white-space:nowrap;font-size:12px;color:rgba(153,153,153,.85);line-height:1.4;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.multi-floor-slots::-webkit-scrollbar{display:none}
/* 默认主题(彩色楼层)：时段文字用半透明白色 */
.multi-floor-block.floor-1 .multi-floor-slots,.multi-floor-block.floor-2 .multi-floor-slots,.multi-floor-block.floor-3 .multi-floor-slots,.multi-floor-block.floor-4 .multi-floor-slots,.multi-floor-block.floor-5 .multi-floor-slots{color:rgba(255,255,255,.75)}
/* 蓝色主题：时段文字淡青 */
.theme-yiban .multi-floor-block .multi-floor-slots{color:rgba(0,204,204,.65)}
/* 怀旧主题：时段文字棕灰 */
.theme-pixel .multi-floor-block .multi-floor-slots{color:rgba(90,61,43,.7);font-family:'Courier New',monospace}

/* 多图模式区域名 - 紧凑间距 */
.multi-area-name{font-size:14px;font-weight:600;margin:4px 0 0;color:#666}

/* 多图模式座位按钮区域 - 复用 .seat-flow 布局 */
.multi-seat-flow{display:flex;flex-wrap:wrap;row-gap:4px;padding:0;align-items:flex-start;justify-content:flex-start}

/* ============================================================ */
/* 【v1.26.0】图片回收站样式                                     */
/* ============================================================ */

/* 恢复按钮（时段卡片内，拍照按钮左侧） */
.ts-btn-restore{background:#fa8c16;color:#fff}
.theme-yiban .ts-btn-restore{background:#cc7a00}
.theme-pixel .ts-btn-restore{background:#c8a96e;border:2px solid #8b7355;border-radius:0;box-shadow:2px 2px 0 #2d2d2d}

/* 【v1.26.1】回收站弹窗（时段恢复 + 浏览恢复 通用样式） */

/* 【v1.28.13 A-02】全局键盘焦点可见样式，覆盖所有主题 */
button:focus-visible,
[role="button"]:focus-visible,
[tabindex="0"]:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2px solid #1890ff;
  outline-offset: 2px;
}
/* 像素主题等特殊主题可覆盖颜色 */
.theme-pixel button:focus-visible {
  outline-color: #333;
}
.trash-browser-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:var(--z-trash-browser);align-items:center;justify-content:center}
.trash-browser-overlay.show{display:flex}
.trash-browser-box{background:#fff;border-radius:12px;padding:20px 16px;width:92%;max-width:400px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);max-height:85vh;display:flex;flex-direction:column;overflow:hidden}
.trash-browser-box h3{font-size:17px;margin-bottom:6px;text-align:center;flex-shrink:0}
.trash-browser-desc{font-size:12px;color:#999;text-align:center;margin-bottom:14px;flex-shrink:0}
/* 【v1.26.1】列表最多显示4行（约300px），超出内部滚动 */
/* 【v1.26.13 修复滚动条闪烁】移除 max-height:300px（与 flex:1 冲突导致边界抖动），
   改由 box 的 max-height:85vh 约束整体高度；添加 scrollbar-gutter:stable 保留滚动条空间，
   防止滚动条出现/消失时内容重排（渐进增强，旧浏览器忽略） */
.trash-browser-list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable;scrollbar-width:none;overscroll-behavior:contain}
.trash-browser-list::-webkit-scrollbar{display:none}
.trash-browser-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #f0f0f0;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
/* 【v1.37.1】长按拖动多选：拖动中锁定滚动 + 长按起始条目高亮边框 */
.trash-browser-list.drag-select{overflow:hidden}
.trash-browser-row.drag-origin{outline:2px solid #fa8c16;outline-offset:-2px;background:#fff7e6;border-radius:6px}
.trash-browser-row:last-child{border-bottom:none}
.trash-browser-row.selected{background:#fff7e6;border-radius:6px}
.trash-browser-thumb-wrap{position:relative;width:56px;height:56px;border-radius:6px;overflow:hidden;border:1px solid #e8e8e8;flex-shrink:0;background:#f0f0f0}
.trash-browser-thumb{width:100%;height:100%;object-fit:cover;display:block}
/* 【v1.26.1】全屏按钮与拼接预览面板的 .thumb-expand 完全一致 */
.trash-browser-thumb-wrap .thumb-expand{position:absolute;left:0;bottom:0;width:44px;height:44px;background:transparent;border-radius:4px;cursor:pointer;z-index:var(--z-thumb-expand);display:flex;align-items:flex-end;justify-content:flex-start;padding:3px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.trash-browser-thumb-wrap .thumb-expand svg{width:18px;height:18px;fill:rgba(255,255,255,.85);filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}
.trash-browser-info{flex:1;min-width:0;overflow:hidden}
.trash-browser-name{font-size:13px;font-weight:500;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trash-browser-size{font-size:11px;color:#999;margin-top:2px}
.trash-browser-checkbox{width:22px;height:22px;border-radius:50%;border:2px solid #d9d9d9;background:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer}
.trash-browser-checkbox.checked{background:#fa8c16;border-color:#fa8c16}
.trash-browser-checkbox.checked::after{content:'';width:6px;height:10px;border-right:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(45deg);margin-top:-2px}

/* 主题适配 */

.theme-yiban .trash-browser-row.selected{background:rgba(204,122,0,.15)}
.theme-yiban .trash-browser-row.drag-origin{outline-color:#cc7a00;background:rgba(204,122,0,.15)}
.theme-yiban .trash-browser-checkbox.checked{background:#cc7a00;border-color:#cc7a00}
.theme-yiban .trash-browser-thumb-wrap{border-color:rgba(0,255,255,.15)}
/* 【v1.29.5】蓝色主题回收站面板文字对比度修复：暗色面板背景下原 #333/#999 几乎不可读 */
.theme-yiban .trash-browser-name{color:#a0e8e8}
.theme-yiban .trash-browser-size{color:#b0b0b0}
.theme-yiban .trash-browser-desc{color:#b0b0b0}
.theme-yiban .trash-browser-row{border-bottom-color:rgba(0,255,255,.1)}

.theme-pixel .trash-browser-row.selected{background:rgba(200,169,110,.2)}
.theme-pixel .trash-browser-row.drag-origin{outline-color:#c8a96e;background:rgba(200,169,110,.2)}
.theme-pixel .trash-browser-checkbox.checked{background:#c8a96e;border-color:#c8a96e}
.theme-pixel .trash-browser-thumb-wrap{border-color:#8b7355;border-radius:0}

/* 安卓适配：缩略图尺寸微调 */
.android-device .trash-browser-thumb-wrap{width:52px;height:52px}
