/* ===== 智能报价单 · 清新版样式 ===== */
:root{
  --mint:#34d399;
  --mint-dark:#10b981;
  --mint-light:#d1fae5;
  --sky:#38bdf8;
  --sky-dark:#0ea5e9;
  --gold:#fbbf24;
  --gold-dark:#d97706;
  --bg:#f0f4f8;
  --surface:#ffffff;
  --surface-2:#f8fafc;
  --text:#0f172a;
  --text-2:#475569;
  --text-3:#94a3b8;
  --border:#e2e8f0;
  --shadow:0 4px 20px rgba(15,23,42,.06);
  --shadow-lg:0 10px 40px rgba(15,23,42,.1);
  --radius:16px;
  --radius-sm:10px;
}

*{
  box-sizing:border-box;
  -webkit-tap-highlight-color:transparent;
  margin:0;
  padding:0;
}

html,body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  background:linear-gradient(135deg,#e0f7fa 0%,#f0fdf4 50%,#f0f9ff 100%);
  color:var(--text);
  font-size:15px;
  line-height:1.5;
  min-height:100vh;
}

/* ===== 桌面端外框 ===== */
.desktop-wrap{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:40px 20px;
  gap:40px;
}

.phone-frame{
  width:380px;
  background:#1e293b;
  border-radius:48px;
  padding:14px;
  box-shadow:0 25px 80px rgba(0,0,0,.25);
  flex-shrink:0;
}

.phone-notch{
  width:110px;
  height:24px;
  background:#1e293b;
  border-radius:0 0 16px 16px;
  margin:-14px auto 0;
  position:relative;
  z-index:10;
}

.phone-screen{
  width:100%;
  height:760px;
  background:var(--bg);
  border-radius:36px;
  overflow:hidden;
  position:relative;
}

/* 桌面端右侧信息 */
.info-panel{
  max-width:420px;
  color:var(--text);
}
.info-panel h1{
  font-size:34px;
  font-weight:800;
  margin-bottom:12px;
  background:linear-gradient(135deg,var(--mint-dark),var(--sky-dark));
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}
.info-panel .tagline{
  font-size:18px;
  color:var(--text-2);
  margin-bottom:28px;
}
.feature-list{display:flex;flex-direction:column;gap:14px}
.feature-item{
  display:flex;align-items:center;gap:12px;
  background:rgba(255,255,255,.6);
  padding:14px 18px;
  border-radius:var(--radius-sm);
  backdrop-filter:blur(8px);
}
.feature-icon{
  width:38px;height:38px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  font-size:18px;flex-shrink:0;
}
.feature-item span{font-size:15px;color:var(--text-2)}

/* ===== 应用容器 ===== */
#app{
  width:100%;
  height:100%;
  max-width:640px;
  margin:0 auto;
  display:flex;
  flex-direction:column;
  background:var(--bg);
  overflow:hidden;
}

@media (max-width:480px){
  .desktop-wrap{display:block;padding:0}
  .phone-frame{width:100%;background:none;padding:0;border-radius:0;box-shadow:none}
  .phone-notch{display:none}
  .phone-screen{height:100vh;border-radius:0}
  .info-panel{display:none}
}

/* ===== 顶部状态栏 ===== */
.topbar{
  position:sticky;top:0;z-index:20;
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 16px;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(12px);
  border-bottom:1px solid rgba(226,232,240,.6);
}
.brand{display:flex;align-items:center;gap:10px}
.brand-logo{
  width:40px;height:40px;border-radius:12px;
  background:linear-gradient(135deg,var(--mint),var(--sky));
  display:flex;align-items:center;justify-content:center;
  font-size:18px;font-weight:700;color:#fff;
  overflow:hidden;box-shadow:0 2px 8px rgba(16,185,129,.25);
}
.brand-logo img{width:100%;height:100%;object-fit:cover}
.brand-text{line-height:1.2}
.brand-name{
  font-size:15px;font-weight:700;color:var(--text);outline:none;
  min-width:60px;border-bottom:1px dashed transparent;
}
.brand-name:hover{border-bottom-color:var(--border)}
.brand-sub{font-size:11px;color:var(--text-3);font-weight:500}

.icon-btn{
  width:38px;height:38px;border-radius:12px;
  background:var(--surface-2);border:1px solid var(--border);
  color:var(--text-2);font-size:16px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:.15s;
}
.icon-btn:hover{background:var(--mint-light);color:var(--mint-dark);border-color:var(--mint-light)}
.icon-btn.light{background:rgba(0,0,0,.05);border:none}

/* ===== 主内容区 ===== */
.main{
  flex:1;
  padding:14px;
  overflow-y:auto;
  display:flex;
  flex-direction:column;
  gap:14px;
}

.card{
  background:var(--surface);border-radius:var(--radius);
  padding:16px;
  box-shadow:var(--shadow);
  border:1px solid rgba(226,232,240,.6);
}

.section-title{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:12px;font-weight:700;font-size:15px;color:var(--text);
}
.head-actions{display:flex;gap:8px;align-items:center}

.link-btn{
  background:none;border:none;color:var(--mint-dark);
  font-weight:600;cursor:pointer;font-size:13px;padding:5px 10px;border-radius:8px;
  transition:.15s;
}
.link-btn:hover{background:var(--mint-light)}
.ocr-btn{
  background:linear-gradient(135deg,var(--mint-light),#e0f2fe);
  padding:6px 12px;border-radius:20px;
  display:flex;align-items:center;gap:4px;
}

/* ===== 表单字段 ===== */
.head-row{display:flex;gap:10px;margin-bottom:10px}
.field{display:flex;flex-direction:column;gap:4px}
.field.grow{flex:1}
.field label,.field-label{
  font-size:12px;color:var(--text-3);font-weight:500;
}
.field input{
  border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:10px 12px;font-size:14px;background:var(--surface-2);
  color:var(--text);outline:none;width:100%;transition:.15s;
}
.field input:focus{
  border-color:var(--mint);background:#fff;
  box-shadow:0 0 0 3px rgba(52,211,153,.12);
}

.contact-strip{
  display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;
  font-size:13px;color:var(--text-2);
  background:linear-gradient(135deg,var(--mint-light),#e0f2fe);
  padding:10px 14px;border-radius:var(--radius-sm);
}
.contact-strip b{color:var(--text);font-weight:600}

/* ===== 明细条目 ===== */
.item{
  border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:12px;margin-bottom:10px;background:var(--surface-2);
  transition:.15s;
}
.item:hover{border-color:#cbd5e1}
.item-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.item input{
  border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px;
  background:#fff;color:var(--text);outline:none;width:100%;transition:.15s;
}
.item input:focus{border-color:var(--mint);box-shadow:0 0 0 3px rgba(52,211,153,.1)}
.item .it-name{flex:2;min-width:150px;font-size:16px;padding:10px}
.item .it-qty{width:80px}
.item .it-unit{width:64px}
.item .it-price{width:80px}
.item .it-total{
  font-weight:800;color:var(--mint-dark);white-space:nowrap;font-size:13px;
  background:var(--mint-light);padding:6px 10px;border-radius:8px;
}
.item-sub{
  display:flex;gap:8px;align-items:center;margin-top:10px;font-size:12px;color:var(--text-2);
  flex-wrap:wrap;
}
.item-sub input{
  width:74px;padding:6px 8px;font-size:12px;border:1px solid var(--border);
  border-radius:6px;background:#fff;
}
.item-sub label{white-space:nowrap;font-weight:500}
.del-btn{
  background:none;border:none;color:#ef4444;font-size:18px;cursor:pointer;
  padding:4px;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;
}
.del-btn:hover{background:#fee2e2}

/* ===== 快捷定额 ===== */
.quota-panel{
  margin-top:4px;border-top:1px dashed var(--border);padding-top:12px;
}
.quota-title{
  font-size:13px;color:var(--text-2);margin-bottom:10px;
  display:flex;align-items:center;gap:6px;font-weight:600;
  justify-content:space-between;flex-wrap:wrap;
}
.quota-tools{display:flex;gap:6px;font-weight:400}
/* 条目扩展：用料 / 功耗 */
.item-ext{margin-top:8px}
.ext-toggle{
  background:none;border:none;color:var(--text-3);font-size:12px;cursor:pointer;
  padding:2px 6px;border-radius:6px;display:inline-flex;align-items:center;gap:4px;
}
.ext-toggle.on{color:var(--mint-dark);background:var(--mint-light)}
.ext-fields{display:flex;gap:8px;margin-top:6px;flex-wrap:wrap}
.ext-fields input{
  border:1px dashed var(--border);border-radius:8px;padding:8px 10px;font-size:13px;
  background:#fff;color:var(--text);outline:none;min-width:140px;flex:1;transition:.15s;
}
.ext-fields input:focus{border-color:var(--mint);border-style:solid;box-shadow:0 0 0 3px rgba(52,211,153,.1)}
.it-power{max-width:180px}
.quota-tags{display:flex;flex-wrap:wrap;gap:8px}
.quota-tag{
  background:#fff;border:1px solid var(--mint-light);color:var(--mint-dark);
  padding:6px 12px;border-radius:20px;font-size:13px;cursor:pointer;font-weight:600;
  transition:.15s;
}
.quota-tag:hover{background:var(--mint-light)}
.quota-tag:active{transform:scale(.96)}

/* ===== 汇总 ===== */
.summary{background:linear-gradient(160deg,#fff,#f0fdf4)}
.sum-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:8px 0;font-size:14px;color:var(--text-2);
}
.discount-input{display:flex;align-items:center;gap:6px}
.discount-input input,.discount-input select{
  border:1px solid var(--border);border-radius:8px;padding:6px 10px;
  font-size:13px;width:84px;background:#fff;color:var(--text);
}
.sum-row.total{
  border-top:2px solid var(--mint-light);margin-top:8px;padding-top:14px;
  font-weight:800;font-size:17px;color:var(--text);
}
.sum-row.total span:last-child{
  color:var(--mint-dark);font-size:22px;
  background:linear-gradient(135deg,var(--mint-light),#e0f2fe);
  padding:6px 14px;border-radius:12px;
}

/* ===== 备注/文本域 ===== */
textarea{
  width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:12px;font-size:14px;font-family:inherit;resize:vertical;
  background:var(--surface-2);color:var(--text);outline:none;min-height:80px;
}
textarea:focus{border-color:var(--mint);box-shadow:0 0 0 3px rgba(52,211,153,.1)}

/* ===== 企业信息卡片 ===== */
.company-card{background:linear-gradient(160deg,#fff,#fefce8)}
.company-inner{display:flex;gap:14px;align-items:flex-start}
.co-logo-wrap{flex-shrink:0}
.co-logo{
  width:68px;height:68px;border-radius:14px;object-fit:contain;
  background:var(--surface-2);border:1px dashed var(--border);
}
.co-logo-ph{
  display:flex;align-items:center;justify-content:center;text-align:center;
  color:var(--text-3);font-size:11px;cursor:pointer;line-height:1.4;
}
.co-fields{flex:1;display:flex;flex-direction:column;gap:9px}
.co-fields input{
  border:1px solid var(--border);border-radius:8px;padding:8px 11px;
  font-size:13px;background:#fff;color:var(--text);outline:none;width:100%;
}
.co-fields input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(251,191,36,.15)}

/* ===== AI 助手 ===== */
/* 悬浮召唤按钮：右侧中段，小尺寸，AI 卡片可见时自动隐藏 */
.ai-fab{
  position:fixed;right:10px;top:50%;transform:translateY(-50%);
  width:40px;height:40px;border-radius:50%;border:none;cursor:pointer;
  background:linear-gradient(135deg,var(--mint),var(--sky));
  color:#fff;font-size:18px;line-height:1;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px rgba(14,165,233,.4);
  z-index:900;
  transition:transform .2s,opacity .25s;
  animation:aiFabPulse 2.4s infinite;
}
.ai-fab:active{transform:translateY(-50%) scale(.92)}
.ai-fab.fab-hidden{opacity:0;pointer-events:none;transform:translateY(-50%) scale(.6)}
@keyframes aiFabPulse{
  0%,100%{box-shadow:0 4px 14px rgba(14,165,233,.4)}
  50%{box-shadow:0 4px 14px rgba(14,165,233,.4),0 0 0 7px rgba(14,165,233,.12)}
}
/* 召唤时的卡片高亮 */
.ai-card.ai-flash{animation:aiFlash 1.2s ease 2}
@keyframes aiFlash{
  0%,100%{box-shadow:none}
  40%{box-shadow:0 0 0 4px rgba(56,189,248,.45)}
}

/* ===== 语音输入 ===== */
/* 麦克风悬浮按钮：输入框聚焦时出现在 AI 按钮正下方 */
.voice-fab{
  position:fixed;right:10px;top:50%;transform:translateY(calc(-50% + 48px));
  width:36px;height:36px;border-radius:50%;border:none;cursor:pointer;
  background:#fff;color:var(--sky);
  border:1.5px solid var(--sky);
  font-size:15px;line-height:1;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 3px 10px rgba(14,165,233,.25);
  z-index:901;
  opacity:0;pointer-events:none;
  transition:opacity .2s,transform .2s;
}
.voice-fab.show{opacity:1;pointer-events:auto}
.voice-fab:active{transform:translateY(calc(-50% + 48px)) scale(.9)}
/* 录音中：红色脉动 */
body.voice-rec .voice-fab,
body.voice-rec .ai-mic{
  background:#ef4444 !important;color:#fff !important;border-color:#ef4444 !important;
  animation:voiceRecPulse 1.1s infinite;
}
@keyframes voiceRecPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,.45)}
  70%{box-shadow:0 0 0 9px rgba(239,68,68,0)}
}
/* AI 输入行内麦克风 */
.ai-mic{
  flex:none;width:38px;height:38px;border-radius:var(--radius-sm);
  border:1.5px solid var(--sky);background:#fff;color:var(--sky);
  font-size:15px;cursor:pointer;transition:.15s;
}
.ai-mic:active{transform:scale(.92)}

.ai-card{
  background:linear-gradient(160deg,#fff,#eff6ff);
  border:1px solid #dbeafe;
}
.ai-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.ai-avatar{
  width:42px;height:42px;border-radius:12px;
  background:linear-gradient(135deg,var(--mint),var(--sky));
  display:flex;align-items:center;justify-content:center;
  font-size:20px;color:#fff;box-shadow:0 4px 12px rgba(14,165,233,.25);
}
.ai-title{font-weight:700;font-size:15px;color:var(--text)}
.ai-sub{font-size:12px;color:var(--text-3)}
.ai-dot{
  width:8px;height:8px;border-radius:50%;background:var(--mint);
  margin-left:auto;animation:pulse 1.6s infinite;
}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}

.ai-chat{
  max-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;
  margin-bottom:12px;padding-right:4px;
}
.ai-msg{
  padding:10px 14px;border-radius:14px;font-size:13px;
  max-width:88%;white-space:pre-wrap;word-break:break-word;line-height:1.5;
}
.ai-msg-bot{
  background:var(--surface-2);align-self:flex-start;
  border-bottom-left-radius:4px;color:var(--text-2);
}
.ai-msg-user{
  background:linear-gradient(135deg,var(--mint),var(--sky));
  color:#fff;align-self:flex-end;border-bottom-right-radius:4px;
}
.ai-input-row{display:flex;gap:8px}
.ai-input-row input{
  flex:1;border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:10px 14px;font-size:14px;outline:none;background:#fff;color:var(--text);
}
.ai-input-row input:focus{border-color:var(--sky);box-shadow:0 0 0 3px rgba(56,189,248,.12)}
.ai-input-row button{
  background:linear-gradient(135deg,var(--mint),var(--sky));border:none;color:#fff;
  border-radius:var(--radius-sm);padding:0 18px;font-weight:700;cursor:pointer;
  transition:.15s;
}
.ai-input-row button:hover{filter:brightness(1.05)}

.footer-hint{
  text-align:center;font-size:12px;color:var(--text-3);padding:4px 0 10px;
}

/* ===== 底部工具栏 ===== */
.bottombar{
  position:sticky;bottom:0;z-index:20;
  display:flex;gap:10px;padding:12px 14px;
  background:rgba(255,255,255,.95);
  backdrop-filter:blur(12px);
  border-top:1px solid rgba(226,232,240,.6);
}
.tool-btn{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:9px;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:#fff;cursor:pointer;font-size:11px;color:var(--text-2);
  transition:.15s;
}
.tool-btn .emo{font-size:20px;line-height:1}
.tool-btn:hover{border-color:var(--mint);color:var(--mint-dark);background:var(--mint-light)}
.tool-btn.primary{
  background:linear-gradient(135deg,var(--mint),var(--sky));color:#fff;
  border:none;flex:1.15;box-shadow:0 4px 14px rgba(14,165,233,.3);
}
.tool-btn.primary:hover{filter:brightness(1.05)}

/* ===== 弹层 ===== */
.overlay{
  position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:100;
  display:none;align-items:flex-end;justify-content:center;
  backdrop-filter:blur(2px);
}
.overlay.show{display:flex}
.sheet{
  background:#fff;width:100%;max-width:640px;
  border-radius:24px 24px 0 0;padding:18px;max-height:85vh;overflow-y:auto;
  animation:slideUp .28s ease;
}
@keyframes slideUp{from{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}
.sheet-handle{width:44px;height:5px;border-radius:3px;background:#e2e8f0;margin:0 auto 14px}
.sheet-title{font-weight:800;font-size:17px;text-align:center;margin-bottom:16px;color:var(--text)}

/* ===== 计算器 ===== */
.calc-display{
  background:var(--surface-2);border-radius:var(--radius-sm);
  padding:18px;text-align:right;font-size:30px;font-weight:700;
  margin-bottom:14px;min-height:64px;overflow:hidden;
  font-variant-numeric:tabular-nums;color:var(--text);
  border:1px solid var(--border);
}
.calc-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.calc-keys button{
  padding:16px 0;border:none;border-radius:var(--radius-sm);font-size:18px;
  cursor:pointer;background:var(--surface-2);font-weight:700;color:var(--text);
  transition:.1s;
}
.calc-keys button:active{transform:scale(.95)}
.calc-keys .op{background:var(--mint-light);color:var(--mint-dark)}
.calc-keys .eq{background:linear-gradient(135deg,var(--mint),var(--sky));color:#fff}
.calc-keys .fn{background:#eef2ff;color:#6366f1}

/* ===== 转发导出 ===== */
.share-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.share-item{
  display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 8px;
  border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;
  background:#fff;transition:.15s;
}
.share-item:hover{border-color:var(--mint);background:var(--mint-light)}
.share-item:active{transform:scale(.96)}
.share-item .si-icon{font-size:30px}
.share-item .si-name{font-size:13px;font-weight:700;color:var(--text)}
.share-item .si-desc{font-size:11px;color:var(--text-3)}

/* ===== 预览 ===== */
.preview-wrap{
  position:fixed;inset:0;background:#e2e8f0;display:flex;flex-direction:column;z-index:110;
}
.preview-bar{
  display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;
  border-bottom:1px solid var(--border);position:sticky;top:0;z-index:2;
}
.preview-bar span{flex:1;text-align:center;font-weight:700;color:var(--text)}
.preview-body{flex:1;overflow-y:auto;padding:20px}

/* ===== 设置表单 ===== */
.settings-form{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.settings-form label{font-size:12px;color:var(--text-3);font-weight:500}
.settings-form input{
  border:1px solid var(--border);border-radius:8px;padding:10px 12px;
  font-size:14px;outline:none;background:var(--surface-2);color:var(--text);
}
.settings-form input:focus{border-color:var(--mint);box-shadow:0 0 0 3px rgba(52,211,153,.1)}
.btn-full{
  width:100%;background:linear-gradient(135deg,var(--mint),var(--sky));color:#fff;
  border:none;border-radius:var(--radius-sm);padding:13px;font-size:15px;
  font-weight:700;cursor:pointer;transition:.15s;
}
.btn-full:hover{filter:brightness(1.05)}

/* OCR 弹层 */
.ocr-methods{display:flex;gap:12px;margin-bottom:14px}
.ocr-method{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:18px;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:#fff;font-size:14px;font-weight:700;cursor:pointer;color:var(--text);
  transition:.15s;
}
.ocr-method:hover{border-color:var(--mint);background:var(--mint-light)}
.ocr-method:active{transform:scale(.96)}
.ocr-method .emo{font-size:28px}
.ocr-preview{margin-bottom:14px;text-align:center}
.ocr-preview img{max-width:100%;max-height:220px;border-radius:var(--radius-sm);border:1px solid var(--border)}
.ocr-mode{margin-bottom:14px}
.ocr-mode label{font-size:12px;color:var(--text-3);font-weight:500;display:block;margin-bottom:6px}
.mode-tabs{display:flex;gap:8px}
.mode-tab{
  flex:1;padding:8px;border:1px solid var(--border);border-radius:var(--radius-sm);
  background:#fff;font-size:13px;cursor:pointer;color:var(--text-2);font-weight:600;
}
.mode-tab.active{background:linear-gradient(135deg,var(--mint),var(--sky));color:#fff;border-color:transparent}
.ocr-status{
  padding:12px;border-radius:var(--radius-sm);background:var(--surface-2);
  font-size:13px;color:var(--text-2);text-align:center;margin-bottom:14px;
}
.ocr-status.loading{background:var(--mint-light);color:var(--mint-dark);font-weight:600}
.ocr-status.error{background:#fee2e2;color:#dc2626}
.ocr-result{margin-bottom:14px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px;background:var(--surface-2)}
.ocr-result-title{font-size:13px;font-weight:700;margin-bottom:10px;color:var(--text)}
.ocr-item{border:1px solid var(--border);border-radius:8px;padding:10px;margin-bottom:8px;background:#fff}
.ocr-item .oi-row{display:flex;gap:6px;align-items:center}
.ocr-item .oi-row + .oi-row{margin-top:6px}
.ocr-item input{
  border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:12px;
  background:#fff;outline:none;width:100%;color:var(--text);
}
.ocr-item input:focus{border-color:var(--mint)}
.ocr-item .oi-name{flex:2.5}
.ocr-item .oi-qty{width:56px}
.ocr-item .oi-unit{width:52px}
.ocr-item .oi-price{width:74px}
.ocr-item .oi-del{background:none;border:none;color:#ef4444;font-size:16px;cursor:pointer;padding:2px}
.ocr-actions{display:flex;gap:10px}
.ocr-actions button{flex:1;padding:12px;border-radius:var(--radius-sm);font-size:15px;font-weight:700;cursor:pointer;border:none}
.btn-primary{background:linear-gradient(135deg,var(--mint),var(--sky));color:#fff}
.btn-primary:disabled{background:#cbd5e1;cursor:not-allowed}
.btn-secondary{background:var(--surface-2);color:var(--text);border:1px solid var(--border)!important}
.ocr-config{margin-top:18px;padding-top:18px;border-top:1px dashed var(--border)}
.ocr-config-title{font-size:14px;font-weight:700;margin-bottom:12px;color:var(--text)}
.ocr-config-hint{font-size:12px;color:var(--text-2);margin-top:8px;line-height:1.6}

/* ===== 发送前确认弹层 ===== */
.confirm-sheet{max-height:92vh}
.confirm-badge{
  display:inline-block;background:linear-gradient(135deg,var(--mint-light),#e0f2fe);
  color:var(--mint-dark);font-weight:700;font-size:14px;
  padding:6px 14px;border-radius:20px;margin-bottom:14px;
}
.confirm-head{
  display:flex;justify-content:space-between;align-items:flex-start;
  padding-bottom:12px;margin-bottom:12px;border-bottom:2px solid var(--mint-light);
}
.confirm-co-name{font-size:17px;font-weight:800;color:var(--text)}
.confirm-co-sub{font-size:12px;color:var(--text-3);margin-top:2px}
.confirm-meta{text-align:right;font-size:12px;color:var(--text-2)}
.confirm-meta b{color:var(--text)}
.confirm-customer{
  display:flex;flex-wrap:wrap;gap:14px;font-size:13px;color:var(--text-2);
  margin-bottom:14px;background:var(--surface-2);padding:10px 14px;border-radius:var(--radius-sm);
}
.confirm-customer b{color:var(--text)}
.confirm-section-title{
  font-size:13px;font-weight:700;color:var(--text);margin-bottom:10px;
  display:flex;align-items:center;gap:6px;
}
.confirm-items{max-height:280px;overflow-y:auto;margin-bottom:14px}
.confirm-item{
  display:flex;justify-content:space-between;align-items:center;
  padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);
  margin-bottom:8px;background:#fff;
}
.ci-name{font-size:14px;font-weight:600;color:var(--text)}
.ci-sub{font-size:12px;color:var(--text-3);margin-top:2px}
.ci-amount{font-size:14px;font-weight:700;color:var(--mint-dark)}
.confirm-summary{
  background:linear-gradient(160deg,#fff,#f0fdf4);
  border:1px solid var(--mint-light);border-radius:var(--radius-sm);
  padding:12px 14px;
}
.confirm-sum-row{
  display:flex;justify-content:space-between;padding:4px 0;
  font-size:13px;color:var(--text-2);
}
.confirm-sum-row.total{
  border-top:1px solid var(--mint-light);margin-top:6px;padding-top:10px;
  font-weight:800;font-size:16px;color:var(--text);
}
.confirm-sum-row.total span:last-child{color:var(--mint-dark);font-size:20px}
.confirm-tip{
  text-align:center;font-size:12px;color:var(--text-3);margin-top:12px;
  display:flex;align-items:center;justify-content:center;gap:6px;
}
.confirm-actions{display:flex;gap:10px;margin-top:16px}
.confirm-actions button{flex:1;padding:13px;border-radius:var(--radius-sm);font-size:15px;font-weight:700;cursor:pointer;border:none}


/* 报价单文档预览 */
.quote-doc{
  background:#fff;max-width:680px;margin:0 auto;border-radius:8px;padding:28px;
  box-shadow:var(--shadow-lg);font-size:14px;color:var(--text);
}
.quote-doc .doc-head{
  display:flex;justify-content:space-between;align-items:flex-start;
  margin-bottom:20px;border-bottom:2px solid var(--mint);padding-bottom:16px;
}
.quote-doc .doc-logo{width:64px;height:64px;object-fit:contain}
.quote-doc .doc-logo-ph{
  width:64px;height:64px;border-radius:10px;background:var(--mint-light);
  color:var(--mint-dark);display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:22px;
}
.quote-doc .doc-co{text-align:right}
.quote-doc .doc-co h2{margin:0;font-size:20px;color:var(--mint-dark)}
.quote-doc .doc-co p{margin:3px 0;font-size:12px;color:var(--text-2)}
.quote-doc h1.title{text-align:center;font-size:22px;margin:4px 0 18px;letter-spacing:4px}
.quote-doc .doc-meta{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:14px;font-size:13px}
.quote-doc .doc-meta b{color:var(--text)}
.quote-doc table{width:100%;border-collapse:collapse;margin-bottom:16px}
.quote-doc th,.quote-doc td{border:1px solid var(--border);padding:8px;text-align:left;font-size:13px}
.quote-doc th{background:#f0fdf4;color:var(--mint-dark);font-weight:700}
.quote-doc td.num{text-align:right;font-variant-numeric:tabular-nums}
.quote-doc .doc-sum{text-align:right;margin:16px 0}
.quote-doc .doc-sum .big{font-size:20px;color:var(--mint-dark);font-weight:800}
.quote-doc .doc-remark{
  margin-top:12px;padding:12px;background:var(--surface-2);border-radius:8px;
  font-size:13px;color:var(--text-2);white-space:pre-wrap;
}
.quote-doc .doc-foot{
  margin-top:20px;padding-top:12px;border-top:1px solid var(--border);
  display:flex;justify-content:space-between;flex-wrap:wrap;font-size:12px;color:var(--text-3);
}

/* Toast */
#toast{
  position:fixed;left:50%;bottom:92px;transform:translateX(-50%);
  background:rgba(15,23,42,.9);color:#fff;padding:11px 20px;border-radius:26px;
  font-size:14px;z-index:999;transition:opacity .3s;max-width:80%;text-align:center;
  box-shadow:0 6px 24px rgba(0,0,0,.25);backdrop-filter:blur(4px);
}

/* 小滚动条美化 */
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:#94a3b8}
