/* Demo Studio AI/Data — generated bundle. Do not edit; rebuild from .demo-staging. */
/* ── Demo Studio · family switcher styles ── */
.family-switch{
  display:flex; gap:6px; flex-wrap:wrap; align-items:center;
  margin:18px 0 4px; padding:4px;
  background:var(--panel-2); border:1px solid var(--line);
  border-radius:var(--radius); width:fit-content; max-width:100%;
}
.family-switch .fam{
  display:inline-flex; align-items:center; gap:8px;
  border:0; cursor:pointer; font:inherit; color:var(--text-2);
  background:transparent; padding:9px 14px; border-radius:10px;
  font-weight:700; font-size:13.5px;
  transition:background .18s var(--ease),color .18s var(--ease),box-shadow .18s var(--ease),transform .12s var(--ease);
  position:relative;
}
.family-switch .fam:hover{ color:var(--text); background:rgba(91,95,199,.08); }
/* Family is a segmented control (scope filter). Keep it distinct from sub-tabs. */
.family-switch .fam.active{
  color:var(--text);
  background:#fff;
  box-shadow:0 1px 2px rgba(15,108,189,.10),0 10px 24px rgba(91,95,199,.10);
}
.family-switch .fam.active::after{
  content:"";
  position:absolute;
  left:12px;
  right:12px;
  bottom:5px;
  height:2px;
  border-radius:99px;
  background:var(--brand-2);
  opacity:.92;
}
.family-switch .fam .fam-ico{ font-size:16px; }
.family-switch .fam .fam-n{
  font-size:11px; font-weight:700; line-height:1;
  padding:2px 7px; border-radius:var(--radius-pill);
  background:rgba(91,95,199,.12); color:var(--brand);
}
.family-switch .fam.active .fam-n{ background:rgba(15,108,189,.10); color:var(--brand-2); }
@media (max-width:640px){
  .family-switch{
    width:100%; justify-content:flex-start; flex-wrap:nowrap; overflow-x:auto;
    scrollbar-width:thin; -webkit-overflow-scrolling:touch;
  }
  .family-switch .fam{ flex:0 0 auto; padding:9px 14px; font-size:13px; }
}

.aicoding-entry{
  display:flex;align-items:center;justify-content:space-between;gap:18px;
  margin-top:14px;padding:18px;border:1px solid var(--line);border-radius:var(--radius-lg);
  background:linear-gradient(135deg,rgba(15,108,189,.07),rgba(91,95,199,.06));
}
.aicoding-entry h3{margin:0 0 6px;font-size:18px;color:var(--text)}
.aicoding-entry p{margin:0;color:var(--text-2);font-size:13px;line-height:1.6;max-width:760px}
@media (max-width:720px){
  .aicoding-entry{align-items:flex-start;flex-direction:column}
}


/* ===== aichat ===== */
/* GPT-5 Chat & Reasoning — scoped to #aichat */
#aichat .aichat-flow{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin:16px 0 18px;
}
#aichat .aichat-flow-step{
  min-height:76px;
  display:flex;
  align-items:center;
  gap:10px;
  text-align:left;
  border:1px solid var(--line);
  background:linear-gradient(180deg,var(--panel),var(--panel-2));
  color:var(--text-2);
  border-radius:var(--radius);
  padding:12px;
  cursor:pointer;
  box-shadow:0 8px 22px rgba(15,23,42,.04);
  transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease,background .15s ease;
}
#aichat .aichat-flow-step:hover{
  transform:translateY(-1px);
  border-color:var(--line-2);
  box-shadow:0 12px 28px rgba(15,23,42,.08);
}
#aichat .aichat-flow-step.active{
  border-color:transparent;
  background:var(--grad-brand);
  color:#fff;
  box-shadow:0 12px 28px rgba(91,95,199,.22);
}
#aichat .aichat-flow-k{
  flex:0 0 34px;
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border-radius:8px;
  background:rgba(91,95,199,.1);
  color:var(--brand);
  font:800 12px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
}
#aichat .aichat-flow-step.active .aichat-flow-k{background:rgba(255,255,255,.22);color:#fff}
#aichat .aichat-flow-step b{display:block;font-size:13.5px;line-height:1.25;color:inherit}
#aichat .aichat-flow-step em{display:block;margin-top:4px;font-style:normal;font-size:11px;line-height:1.2;color:inherit;opacity:.76}
#aichat .aichat-controls{
  display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start;margin-bottom:14px;
}
#aichat .aichat-controls > label{min-width:200px}
#aichat .aichat-preset-wrap{flex:1;min-width:260px}
#aichat .aichat-preset-wrap .label{margin-bottom:8px}

#aichat .aichat-presets{display:flex;flex-wrap:wrap;gap:8px}
#aichat .aichat-chip{
  font:600 12.5px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  border:1.5px solid var(--line);background:var(--panel);color:var(--text-2);
  border-radius:var(--radius-pill);padding:8px 14px;cursor:pointer;
  transition:all .15s ease;white-space:nowrap;
}
#aichat .aichat-chip:hover{background:var(--panel-2);border-color:var(--line-2);color:var(--brand);transform:translateY(-1px)}
#aichat .aichat-chip.preset.active{
  background:var(--grad-brand);border-color:transparent;color:#fff;
  box-shadow:0 6px 16px rgba(91,95,199,.28);
}
#aichat .aichat-preset-hint{
  margin-top:10px;font-size:12.5px;color:var(--text-2);font-weight:500;
  background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);
  padding:9px 13px;line-height:1.5;
}

#aichat .aichat-thread{
  border:1px solid var(--line);border-radius:var(--radius-lg);
  background:var(--bg);box-shadow:inset 0 1px 3px rgba(91,95,199,.04);
  padding:18px;min-height:300px;max-height:48vh;overflow-y:auto;
  display:flex;flex-direction:column;gap:14px;
}
#aichat .aichat-empty{
  margin:auto;text-align:center;color:var(--muted);padding:30px 12px;
}
#aichat .aichat-empty-ico{font-size:34px;margin-bottom:10px}
#aichat .aichat-empty-t{font-size:15px;font-weight:700;color:var(--text-2)}
#aichat .aichat-empty-s{font-size:12.5px;margin-top:5px;font-weight:500}

#aichat .aichat-msg{display:flex;flex-direction:column;max-width:82%;gap:5px}
#aichat .aichat-msg.user{align-self:flex-end;align-items:flex-end}
#aichat .aichat-msg.assistant{align-self:flex-start;align-items:flex-start}
#aichat .aichat-role{
  font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  color:var(--muted);padding:0 4px;
}
#aichat .aichat-text{
  border-radius:var(--radius-lg);padding:12px 16px;font-size:14px;line-height:1.6;
  white-space:pre-wrap;word-break:break-word;font-weight:500;
}
#aichat .aichat-msg.user .aichat-text{
  background:var(--grad-brand);color:#fff;border-bottom-right-radius:6px;
  box-shadow:0 6px 16px rgba(91,95,199,.22);
}
#aichat .aichat-msg.assistant .aichat-text{
  background:var(--panel);color:var(--text);border:1px solid var(--line);
  border-bottom-left-radius:6px;box-shadow:var(--shadow);
}
#aichat .aichat-usage{font-size:10.5px;color:var(--muted);padding:0 4px;font-weight:500}
/* live streaming bubble: blinking type caret */
#aichat .aichat-msg.streaming .aichat-text{
  background:var(--panel);color:var(--text);border:1px solid var(--brand);
  border-bottom-left-radius:6px;box-shadow:0 4px 14px rgba(0,120,212,.14);
}
#aichat .aichat-msg.streaming .aichat-text::after{
  content:"";display:inline-block;width:7px;height:15px;margin-left:2px;
  vertical-align:-2px;background:var(--brand);border-radius:1px;
  animation:aichatCaret 1s steps(1) infinite;
}
@keyframes aichatCaret{0%,49%{opacity:1}50%,100%{opacity:0}}
/* Markdown-lite structured rendering for design-chain answers */
#aichat .aichat-text.md{white-space:normal}
#aichat .aichat-text.md>:first-child{margin-top:0}
#aichat .aichat-text.md>:last-child{margin-bottom:0}
#aichat .aichat-text.md .md-p{margin:0 0 8px;line-height:1.62}
#aichat .aichat-text.md .md-h{margin:13px 0 7px;font-weight:700;line-height:1.35;letter-spacing:.01em}
#aichat .aichat-text.md h3.md-h{font-size:15.5px;color:var(--brand)}
#aichat .aichat-text.md h4.md-h{font-size:14.5px}
#aichat .aichat-text.md h5.md-h,#aichat .aichat-text.md h6.md-h{font-size:13.5px;color:var(--muted)}
#aichat .aichat-text.md .md-ul,#aichat .aichat-text.md .md-ol{margin:4px 0 9px;padding-left:20px}
#aichat .aichat-text.md .md-ul li,#aichat .aichat-text.md .md-ol li{margin:3px 0;line-height:1.55}
#aichat .aichat-text.md .md-ul{list-style:disc}
#aichat .aichat-text.md .md-ol{list-style:decimal}
#aichat .aichat-text.md strong{font-weight:700;color:var(--text)}
#aichat .aichat-text.md em{font-style:italic}
#aichat .aichat-text.md a{color:var(--brand);text-decoration:underline;word-break:break-all}
#aichat .aichat-text.md .md-ic{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;background:rgba(91,95,199,.10);color:#3f3f8a;padding:1px 5px;border-radius:5px}
#aichat .aichat-text.md .md-pre{margin:7px 0 9px;padding:11px 13px;background:#1e1e2e;color:#e6e6f0;border-radius:10px;overflow:auto;font-size:12.5px;line-height:1.5}
#aichat .aichat-text.md .md-pre code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;background:none;color:inherit;padding:0}

#aichat .aichat-dots{display:inline-flex;gap:5px;align-items:center;padding:2px 0}
#aichat .aichat-dots i{
  width:7px;height:7px;border-radius:50%;background:var(--brand);opacity:.4;
  animation:aichatBlink 1.2s infinite ease-in-out;
}
#aichat .aichat-dots i:nth-child(2){animation-delay:.2s}
#aichat .aichat-dots i:nth-child(3){animation-delay:.4s}
@keyframes aichatBlink{0%,80%,100%{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}

#aichat .aichat-starters{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 12px}
#aichat .aichat-chip.starter{color:var(--brand);border-color:var(--line-2);background:rgba(91,95,199,.06)}

#aichat .aichat-composer{
  display:flex;flex-direction:column;gap:10px;
  border:1.5px solid var(--line);border-radius:var(--radius-lg);
  background:var(--panel);padding:12px;box-shadow:var(--shadow);
}
#aichat .aichat-composer:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.12)}
#aichat #aichat-input{
  width:100%;border:none;background:transparent;resize:none;outline:none;
  font:500 14px/1.6 "Segoe UI Variable","Inter","Segoe UI",system-ui;color:var(--text);
  padding:4px 6px;max-height:160px;min-height:44px;
}
#aichat #aichat-input:disabled{opacity:.6}
#aichat .aichat-composer-actions{display:flex;justify-content:flex-end;gap:10px}

@media (max-width:900px){
  #aichat .aichat-flow{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){
  #aichat .aichat-flow{grid-template-columns:1fr}
  #aichat .aichat-msg{max-width:92%}
  #aichat .aichat-controls > label{min-width:100%}
}


/* ===== aiimage ===== */
/* ⑨ Image Generation — Azure OpenAI / Foundry gpt-image · scoped to #aiimage */

#aiimage .aii-grid{
  display:grid;
  grid-template-columns:minmax(320px,1fr) minmax(360px,1.15fr);
  gap:22px;
  align-items:start;
}
@media (max-width:880px){
  #aiimage .aii-grid{grid-template-columns:1fr}
}

/* ---- Left controls ---- */
#aiimage .aii-controls{display:flex;flex-direction:column;gap:14px}
#aiimage #aii-prompt{
  width:100%;
  font:14px/1.6 "Segoe UI Variable","Segoe UI",system-ui;
  background:var(--panel);
  color:var(--text);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:12px 14px;
  resize:vertical;
  min-height:120px;
}

#aiimage .aii-chips-wrap{display:flex;flex-direction:column;gap:8px}
#aiimage .aii-chips-label{
  font-size:11px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--brand);font-weight:700;
}
#aiimage .aii-chips{display:flex;flex-wrap:wrap;gap:8px}
#aiimage .aii-chip{
  font-size:12.5px;font-weight:600;
  color:var(--brand-2);
  background:rgba(15,108,189,.08);
  border:1px solid rgba(15,108,189,.22);
  border-radius:var(--radius-pill);
  padding:7px 14px;
  cursor:pointer;
  transition:all .18s ease;
  line-height:1.2;
}
#aiimage .aii-chip:hover{
  background:var(--grad-brand);
  color:#fff;border-color:transparent;
  transform:translateY(-1px);
  box-shadow:0 6px 16px rgba(15,108,189,.28);
}

#aiimage .aii-row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
#aiimage .aii-size{flex:1;min-width:160px}
#aiimage #aii-size{width:100%}
#aiimage .aii-go{flex:0 0 auto;white-space:nowrap}

/* ---- Right stage ---- */
#aiimage .aii-stage{
  position:relative;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;
  min-height:360px;
  padding:22px;
  background:var(--panel-2);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  overflow:hidden;
}
#aiimage .aii-stage::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(ellipse 70% 60% at 50% 0%,rgba(15,108,189,.10),transparent 65%);
  pointer-events:none;
}

/* placeholder */
#aiimage .aii-placeholder{
  text-align:center;color:var(--muted);
  display:flex;flex-direction:column;align-items:center;gap:8px;
}
#aiimage .aii-ph-ico{font-size:46px;opacity:.7}
#aiimage .aii-ph-txt{font-size:14px;font-weight:600;color:var(--text-2)}
#aiimage .aii-ph-sub{font-size:11px;letter-spacing:.04em;color:var(--muted)}

/* loading */
#aiimage .aii-loading{
  text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:12px;
  z-index:1;
}
#aiimage .aii-spinner{
  width:54px;height:54px;border-radius:50%;
  border:4px solid rgba(91,95,199,.18);
  border-top-color:var(--brand-2);
  border-right-color:var(--brand);
  animation:aiiSpin 0.9s linear infinite;
}
@keyframes aiiSpin{to{transform:rotate(360deg)}}
#aiimage .aii-load-title{
  font-size:15px;font-weight:700;
  background:var(--grad-brand);-webkit-background-clip:text;background-clip:text;color:transparent;
}
#aiimage .aii-load-sub{font-size:12px;color:var(--text-2);max-width:280px;line-height:1.5}
#aiimage .aii-timer{
  font-size:13px;font-weight:700;color:var(--brand-2);
  background:rgba(15,108,189,.10);
  border:1px solid rgba(15,108,189,.22);
  border-radius:var(--radius-pill);
  padding:5px 16px;
  font-variant-numeric:tabular-nums;
}

/* result figure */
#aiimage .aii-figure{margin:0;width:100%;z-index:1;display:flex;flex-direction:column;align-items:center;gap:10px}
#aiimage #aii-img{
  max-width:100%;
  max-height:520px;
  border-radius:var(--radius);
  border:1px solid var(--line-2);
  box-shadow:var(--shadow-lg);
  background:#fff;
  animation:aiiFade .4s ease;
}
@keyframes aiiFade{from{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}
#aiimage .aii-cap{
  font-size:11.5px;color:var(--muted);text-align:center;
  letter-spacing:.02em;font-weight:500;
}
#aiimage .aii-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;z-index:1}

/* status states reuse global .status / .busy / .error / .ok */


/* ===== aivision ===== */
/* Vision / Multimodal tab — scoped to #aivision. Native Demo Studio look. */
#aivision .aivision-grid{
  display:grid;grid-template-columns:minmax(260px,360px) 1fr;gap:20px;align-items:start;margin-top:4px;
}
@media (max-width:760px){
  #aivision .aivision-grid{grid-template-columns:1fr}
}

/* ---- Left: drop zone + preview ---- */
#aivision .aivision-left{display:flex;flex-direction:column;gap:10px}
#aivision .aivision-drop{
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  border:2px dashed var(--line);border-radius:var(--radius-lg);
  background:linear-gradient(180deg,rgba(91,95,199,.04),transparent 70%),var(--bg);
  min-height:220px;padding:16px;text-align:center;position:relative;overflow:hidden;
  transition:all .16s ease;
}
#aivision .aivision-drop:hover{border-color:var(--brand);background:rgba(91,95,199,.05)}
#aivision .aivision-drop.dragover{border-color:var(--brand);background:rgba(91,95,199,.10);transform:scale(1.004)}
#aivision .aivision-drop.has-image{padding:0;border-style:solid;border-color:var(--brand)}
#aivision .aivision-drop.shake{animation:aivisionShake .45s ease}
@keyframes aivisionShake{
  0%,100%{transform:translateX(0)}
  20%,60%{transform:translateX(-6px)}
  40%,80%{transform:translateX(6px)}
}
#aivision .aivision-drop-empty{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text-2);pointer-events:none}
#aivision .aivision-drop-ico{font-size:34px;line-height:1}
#aivision .aivision-drop-t{font-size:14px;font-weight:600;color:var(--text)}
#aivision .aivision-drop-s{font-size:11.5px;color:var(--muted)}
#aivision .aivision-thumb{display:block;width:100%;max-height:340px;object-fit:contain;background:#0b0b0f;border-radius:var(--radius-lg)}

#aivision .aivision-drop-note{
  font-size:11.5px;line-height:1.6;color:var(--text-2);
  background:var(--bg);border-left:3px solid var(--brand);
  border-radius:6px;padding:9px 12px;
}
#aivision .aivision-drop-note strong{color:var(--brand-3);font-weight:600}
#aivision .aivision-fileinfo{
  font-size:12px;color:var(--ok);font-weight:500;
  background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.22);
  border-radius:var(--radius);padding:8px 11px;word-break:break-all;
}
#aivision .aivision-clear{align-self:flex-start;font-size:12px;padding:8px 14px}

/* ---- Right: question + presets + answer ---- */
#aivision .aivision-right{display:flex;flex-direction:column;gap:10px;min-width:0}
#aivision .label{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--brand);font-weight:700}
#aivision .aivision-presets{display:flex;flex-wrap:wrap;gap:8px}
#aivision .aivision-chip{
  appearance:none;cursor:pointer;font-family:inherit;
  background:var(--panel);border:1px solid var(--line);color:var(--text);
  border-radius:var(--radius-pill);padding:8px 14px;font-size:12.5px;font-weight:500;
  transition:all .14s ease;
}
#aivision .aivision-chip:hover{border-color:var(--brand);background:rgba(91,95,199,.06);color:var(--brand);transform:translateY(-1px)}
#aivision .aivision-chip.active{border-color:var(--brand);background:rgba(91,95,199,.10);color:var(--brand-3);font-weight:600}

#aivision .aivision-input{
  width:100%;font:14px/1.6 "Segoe UI Variable","Segoe UI",system-ui;
  background:var(--panel);color:var(--text);
  border:1.5px solid var(--line);border-radius:var(--radius);padding:12px 13px;resize:vertical;
}
#aivision .aivision-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(91,95,199,.12)}
#aivision .aivision-actions{display:flex;gap:10px;align-items:center}

#aivision .aivision-safety{
  margin-top:4px;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--radius-lg);padding:14px 16px;animation:aivisionFade .3s ease;
}
#aivision .aivision-safety-h{
  font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--brand);font-weight:700;
  margin-bottom:10px;display:flex;gap:8px;align-items:center;justify-content:space-between;
}
#aivision .aivision-safety-h span{font-size:10.5px;color:var(--muted);font-weight:600;letter-spacing:.02em;text-transform:none}
#aivision .aivision-safety-summary,
#aivision .aivision-safety-note{
  display:flex;flex-direction:column;gap:4px;border:1px solid var(--line);border-radius:var(--radius);
  background:var(--panel-2);padding:10px 12px;margin-bottom:8px;font-size:12.5px;line-height:1.45;color:var(--text-2);
}
#aivision .aivision-safety-summary b,
#aivision .aivision-safety-note b{font-size:13px;color:var(--text)}
#aivision .aivision-safety-summary.ok{border-color:rgba(16,185,129,.24);background:rgba(16,185,129,.08)}
#aivision .aivision-safety-summary.warn,
#aivision .aivision-safety-note.warn{border-color:rgba(245,158,11,.28);background:rgba(245,158,11,.10)}
#aivision .aivision-safety-summary.bad{border-color:rgba(220,38,38,.30);background:rgba(220,38,38,.08)}
#aivision .aivision-safety-row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  border:1px solid var(--line);border-radius:10px;background:var(--bg);padding:7px 10px;
  font-size:12.5px;color:var(--text-2);
}
#aivision .aivision-safety-row + .aivision-safety-row{margin-top:6px}
#aivision .aivision-safety-row b{font-variant-numeric:tabular-nums;border-radius:999px;padding:2px 8px;background:var(--panel-2);color:var(--muted)}
#aivision .aivision-safety-row b.ok{color:var(--ok);background:rgba(16,185,129,.10)}
#aivision .aivision-safety-row b.warn{color:var(--warn);background:rgba(245,158,11,.12)}
#aivision .aivision-safety-row b.bad{color:#dc2626;background:rgba(220,38,38,.10)}
#aivision .aivision-answer{
  margin-top:4px;background:var(--bg);border:1px solid var(--line);
  border-radius:var(--radius-lg);padding:16px;animation:aivisionFade .3s ease;
}
@keyframes aivisionFade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
#aivision .aivision-answer-h{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--brand);font-weight:700;margin-bottom:8px;display:flex;gap:8px;align-items:center}
#aivision .aivision-answer-model{font-size:10.5px;color:var(--muted);font-weight:600;letter-spacing:.02em;text-transform:none}
#aivision .aivision-answer-body{
  white-space:pre-wrap;font-size:14px;line-height:1.7;color:var(--text);
  word-break:break-word;
}
#aivision code{background:var(--panel-2);padding:1px 6px;border-radius:4px;color:var(--brand-3);font-size:.92em}


/* ===== airag ===== */
/* RAG · Knowledge Q&A — scoped to #airag. Reuses studio tokens (--brand, --line, etc.). */

#airag .airag-ask{
  display:flex;flex-direction:column;gap:10px;margin-top:4px;
  background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px;
}
#airag .airag-ask textarea{
  width:100%;resize:vertical;min-height:46px;border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;font:inherit;font-size:14px;background:#fff;color:var(--text);line-height:1.5;
}
#airag .airag-ask textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.15)}
#airag .airag-ask-actions{display:flex;justify-content:flex-end;gap:10px}

#airag .airag-examples{margin-top:14px}
#airag .airag-examples .label{font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:8px}
#airag .airag-example-chips{display:flex;flex-wrap:wrap;gap:8px}
#airag .airag-chip{
  font:inherit;font-size:12.5px;font-weight:500;cursor:pointer;
  color:var(--brand);background:rgba(91,95,199,.08);border:1px solid rgba(91,95,199,.22);
  border-radius:999px;padding:7px 13px;transition:all .15s ease;
}
#airag .airag-chip:hover{background:rgba(91,95,199,.16);transform:translateY(-1px)}

#airag .airag-stages{margin-top:18px;display:flex;flex-direction:column;gap:16px}
#airag .airag-stage{
  border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:hidden;
}
#airag .airag-stage-h{
  display:flex;align-items:center;gap:10px;font-size:13.5px;font-weight:700;color:var(--text);
  padding:11px 14px;background:var(--panel-2);border-bottom:1px solid var(--line);
}
#airag .airag-step{
  display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:0 0 22px;
  border-radius:50%;background:var(--grad-brand,linear-gradient(135deg,var(--brand),var(--brand-3)));
  color:#fff;font-size:12px;font-weight:700;
}
#airag .airag-stage-h .badge{margin-left:auto}

#airag .airag-hits{padding:12px 14px;display:flex;flex-direction:column;gap:10px}
#airag .airag-hit{
  border:1px solid var(--line);border-left:3px solid var(--brand-2);
  border-radius:10px;padding:10px 12px;background:var(--panel-2);
}
#airag .airag-hit-h{display:flex;align-items:center;gap:8px;margin-bottom:5px;flex-wrap:wrap}
#airag .airag-hit-n{font-size:11px;font-weight:700;color:#fff;background:var(--brand-2);border-radius:6px;padding:1px 7px}
#airag .airag-hit-title{font-size:13px;font-weight:700;color:var(--text)}
#airag .airag-hit-score{margin-left:auto;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
#airag .airag-hit-text{font-size:12.5px;line-height:1.6;color:var(--text-2)}

#airag .airag-answer{padding:14px}
#airag .airag-answer-empty,
#airag .airag-answer-loading{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px}
#airag .airag-answer-body{font-size:14px;line-height:1.75;color:var(--text)}
#airag .airag-cite{
  font-size:11.5px;font-weight:600;color:var(--brand-2);
  background:rgba(15,108,189,.10);border:1px solid rgba(15,108,189,.22);
  border-radius:6px;padding:1px 6px;margin:0 1px;white-space:nowrap;
}
#airag .airag-answer-err{font-size:13px;color:var(--warn);line-height:1.6}
#airag .airag-answer-err-sub{font-size:12px;color:var(--text-2)}

#airag .airag-spin{
  display:inline-block;width:13px;height:13px;border-radius:50%;
  border:2px solid var(--brand);border-top-color:transparent;animation:airagSpin .7s linear infinite;
}
@keyframes airagSpin{to{transform:rotate(360deg)}}

#airag .status b{color:var(--brand);font-weight:700}


/* ===== aidoc ===== */
/* ⑨ Document Intelligence — scoped to #aidoc */
#aidoc .aidoc-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start;margin-top:4px;
}
#aidoc .aidoc-col{min-width:0;display:flex;flex-direction:column;gap:4px}

#aidoc .aidoc-preview{
  margin-top:14px;background:var(--panel-2);border:1px solid var(--line);
  border-radius:var(--radius);padding:12px;
}
#aidoc .aidoc-preview img{
  max-width:100%;max-height:300px;display:block;border-radius:10px;
  border:1px solid var(--line);background:#fff;
}
#aidoc .aidoc-fname{font-size:11.5px;color:var(--muted);margin-top:8px;font-weight:500;word-break:break-all}

#aidoc .aidoc-out-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;
}
#aidoc .aidoc-out-head .label{margin-bottom:0}
#aidoc .aidoc-toggle{font-size:11.5px;padding:6px 12px;color:var(--brand);background:rgba(91,95,199,.08)}
#aidoc .aidoc-toggle:hover{background:rgba(91,95,199,.14)}

#aidoc .aidoc-result{
  background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px;min-height:160px;
}
#aidoc .aidoc-empty{color:var(--muted);font-size:13px;line-height:1.7;text-align:center;padding:28px 8px}
#aidoc .aidoc-empty.small{padding:10px 4px;font-size:12px}

#aidoc table.aidoc-kv{width:100%;border-collapse:collapse;font-size:13px}
#aidoc table.aidoc-kv th{
  text-align:left;color:var(--text-2);font-weight:600;white-space:nowrap;
  padding:8px 12px 8px 0;vertical-align:top;width:40%;border-bottom:1px solid var(--line);
}
#aidoc table.aidoc-kv td{
  color:var(--text);font-weight:500;padding:8px 0;vertical-align:top;
  border-bottom:1px solid var(--line);word-break:break-word;
}
#aidoc table.aidoc-kv tr:last-child th,
#aidoc table.aidoc-kv tr:last-child td{border-bottom:none}

#aidoc .aidoc-sub-label{margin-top:16px}
#aidoc table.aidoc-items{
  width:100%;border-collapse:collapse;font-size:12.5px;margin-top:4px;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden;
}
#aidoc table.aidoc-items thead th{
  background:var(--panel-2);color:var(--text-2);font-weight:600;text-align:left;
  padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;
}
#aidoc table.aidoc-items td{
  padding:8px 10px;border-bottom:1px solid var(--line);color:var(--text);font-weight:500;
}
#aidoc table.aidoc-items tbody tr:last-child td{border-bottom:none}
#aidoc table.aidoc-items tbody tr:hover{background:rgba(91,95,199,.04)}

#aidoc .aidoc-di-note{
  margin:0 0 12px;
  padding:8px 10px;
  border:1px solid rgba(16,185,129,.24);
  background:rgba(16,185,129,.08);
  border-radius:8px;
  color:#047857;
  font-size:12px;
  line-height:1.5;
}

#aidoc .aidoc-na{color:var(--muted)}

#aidoc pre.aidoc-raw{
  margin-top:12px;white-space:pre-wrap;word-break:break-word;
  background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px;color:var(--text);font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;
  max-height:340px;overflow:auto;
}

@media (max-width:860px){
  #aidoc .aidoc-grid{grid-template-columns:1fr}
}


/* ===== ailang ===== */
/* Translator + Language tab — scoped to #ailang */

#ailang .al-input{margin-bottom:18px}
#ailang .al-label{display:block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--brand);margin-bottom:8px}
#ailang #al-src{width:100%;resize:vertical;min-height:108px;line-height:1.6;font-size:14px}

#ailang .al-controls{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:12px}
#ailang .al-field{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:600;color:var(--text-2)}
#ailang .al-field select{padding:9px 12px;min-width:180px}
#ailang .al-btns{display:flex;gap:10px;flex-wrap:wrap}

#ailang .al-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media (max-width:880px){#ailang .al-grid{grid-template-columns:1fr}}

#ailang .al-col{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px}
#ailang .al-col-h{font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px;color:var(--text);letter-spacing:-.01em}
#ailang .al-col-h .al-ico{font-size:16px}
#ailang .al-tag{margin-left:auto;font-size:10.5px;font-weight:600;color:var(--brand);background:rgba(91,95,199,.10);border:1px solid rgba(91,95,199,.20);border-radius:var(--radius-pill);padding:3px 10px;letter-spacing:.02em}
#ailang .al-col .status{margin:10px 0 14px}

/* Translation cards */
#ailang .al-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:13px 15px;margin-bottom:12px}
#ailang .al-card:last-child{margin-bottom:0}
#ailang .al-card-h{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--brand-3);margin-bottom:7px}
#ailang .al-card-body{font-size:14px;line-height:1.65;color:var(--text);white-space:pre-wrap;word-break:break-word}
#ailang .al-card-body.al-empty{color:var(--muted);font-style:italic}

/* Analysis */
#ailang .al-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px dashed var(--line)}
#ailang .al-row-k{font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-2);min-width:120px}
#ailang .al-row-v{font-size:14px;font-weight:600;color:var(--text)}

#ailang .al-block{padding:12px 0;border-bottom:1px dashed var(--line)}
#ailang .al-block:last-child{border-bottom:none}
#ailang .al-block-k{font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-2);margin-bottom:9px}
#ailang .al-chips{display:flex;flex-wrap:wrap;gap:7px}
#ailang .al-muted{color:var(--muted);font-style:italic;font-size:13px}

#ailang .al-summary{font-size:14px;line-height:1.6;color:var(--text);font-weight:500}

/* Chips */
#ailang .al-chip{display:inline-flex;align-items:center;font-size:12.5px;font-weight:600;border-radius:var(--radius-pill);padding:5px 12px;border:1px solid var(--line-2)}
#ailang .al-chip.al-phrase{background:rgba(91,95,199,.08);color:var(--brand);border-color:rgba(91,95,199,.22)}
#ailang .al-chip.al-entity{background:rgba(139,92,246,.08);color:var(--brand-3);border-color:rgba(139,92,246,.22)}

/* Sentiment chip — colored by var(--ok)/--warn/--accent */
#ailang .al-chip.al-sent{font-size:13px;color:var(--text);background:var(--panel-2);border-color:var(--line-2)}
#ailang .al-chip.al-sent.pos{background:rgba(16,185,129,.12);color:var(--ok);border-color:rgba(16,185,129,.30)}
#ailang .al-chip.al-sent.neu{background:rgba(245,158,11,.12);color:var(--warn);border-color:rgba(245,158,11,.30)}
#ailang .al-chip.al-sent.neg{background:rgba(236,72,153,.12);color:var(--accent);border-color:rgba(236,72,153,.30)}



/* v12.0.1 hidden-state guard: ID-scoped display rules override [hidden]; force none for all new demo tabs */
#aiimage [hidden],#aivision [hidden],#aichat [hidden],#airag [hidden],#aidoc [hidden],#ailang [hidden]{display:none!important}

/* ===== Solution scenario CSS: solcontact ===== */
/* 智能联络中心 Copilot — scoped to #solcontact */

#solcontact .solc-input{
  border:1.5px solid var(--line);border-radius:var(--radius-lg);
  background:var(--panel);padding:14px;box-shadow:var(--shadow);margin-bottom:16px;
}
#solcontact .solc-input-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:10px}
#solcontact .solc-input-head .label{font-weight:700;color:var(--text);font-size:13px;display:flex;align-items:center;gap:8px}
#solcontact .solc-chip-tag{
  font:600 10.5px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  color:var(--ok);background:rgba(16,185,129,.10);border:1px solid rgba(16,185,129,.22);
  border-radius:var(--radius-pill);padding:3px 9px;letter-spacing:.02em;
}
#solcontact .solc-presets{display:flex;flex-wrap:wrap;gap:8px}
#solcontact .solc-chip{
  font:600 12px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  border:1.5px solid var(--line);background:var(--panel);color:var(--text-2);
  border-radius:var(--radius-pill);padding:7px 13px;cursor:pointer;
  transition:all .15s ease;white-space:nowrap;
}
#solcontact .solc-chip:hover{background:var(--panel-2);border-color:var(--brand);color:var(--brand);transform:translateY(-1px)}
#solcontact .solc-chip.active{
  background:var(--grad-brand);border-color:transparent;color:#fff;
  box-shadow:0 6px 16px rgba(91,95,199,.28);
}
#solcontact #solcontact-msg{
  width:100%;box-sizing:border-box;border:1.5px solid var(--line);border-radius:var(--radius);
  background:var(--bg);color:var(--text);resize:vertical;outline:none;
  font:500 14px/1.6 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  padding:12px 14px;min-height:88px;
}
#solcontact #solcontact-msg:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.12)}
#solcontact #solcontact-msg:disabled{opacity:.65}
#solcontact .solc-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:12px}

#solcontact .solc-pipeline{display:flex;flex-direction:column;gap:14px}

#solcontact .solc-stage{
  border:1.5px solid var(--line);border-radius:var(--radius-lg);
  background:var(--panel);box-shadow:var(--shadow);padding:14px 16px;
  transition:border-color .2s ease,box-shadow .2s ease;
}
#solcontact .solc-stage[data-active="1"]{
  border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.12),var(--shadow);
}
#solcontact .solc-stage-h{display:flex;align-items:center;gap:10px}
#solcontact .solc-stage-no{
  width:24px;height:24px;flex:0 0 24px;border-radius:50%;
  background:var(--grad-brand);color:#fff;font:700 12px/24px "Segoe UI Variable","Segoe UI",system-ui;
  text-align:center;box-shadow:0 4px 10px rgba(91,95,199,.28);
}
#solcontact .solc-stage-title{font-weight:700;font-size:14.5px;color:var(--text);flex:1}
#solcontact .solc-stage-state{
  font:700 11px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  display:inline-flex;align-items:center;gap:6px;
  border-radius:var(--radius-pill);padding:5px 11px;letter-spacing:.02em;
  border:1px solid var(--line);color:var(--muted);background:var(--panel-2);
}
#solcontact .solc-stage-state[data-state="run"]{color:var(--brand);border-color:rgba(91,95,199,.3);background:rgba(91,95,199,.08)}
#solcontact .solc-stage-state[data-state="done"]{color:var(--ok);border-color:rgba(16,185,129,.25);background:rgba(16,185,129,.10)}
#solcontact .solc-stage-state[data-state="error"]{color:var(--warn);border-color:rgba(245,158,11,.28);background:rgba(245,158,11,.10)}
#solcontact .solc-stage-sub{font-size:11.5px;color:var(--muted);margin:6px 0 0 34px;font-weight:500}

#solcontact .solc-stage-svc{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0 34px}

#solcontact .solc-svc-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);font:600 11px/1.4 "Segoe UI Variable","Segoe UI",system-ui;color:var(--text-2)}

#solcontact .solc-svc-chip .solc-svc-dot{width:7px;height:7px;border-radius:50%;background:var(--muted);flex:0 0 7px}

#solcontact .solc-svc-chip.live{color:#2563eb;border-color:rgba(37,99,235,.32);background:rgba(37,99,235,.08)}

#solcontact .solc-svc-chip.live .solc-svc-dot{background:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.16)}

#solcontact .solc-svc-chip.ok{color:var(--ok);border-color:rgba(16,185,129,.3);background:rgba(16,185,129,.10)}

#solcontact .solc-svc-chip.ok .solc-svc-dot{background:var(--ok)}

#solcontact .solc-svc-chip.warn{color:var(--warn);border-color:rgba(245,158,11,.32);background:rgba(245,158,11,.10)}

#solcontact .solc-svc-chip.warn .solc-svc-dot{background:var(--warn)}

#solcontact .solc-svc-chip.error{color:#ef4444;border-color:rgba(239,68,68,.32);background:rgba(239,68,68,.08)}

#solcontact .solc-svc-chip.error .solc-svc-dot{background:#ef4444}

#solcontact .solc-svc-tag{font-size:9px;font-weight:800;letter-spacing:.04em;opacity:.85;text-transform:uppercase}

#solcontact .solc-spin{
  width:11px;height:11px;border-radius:50%;
  border:2px solid var(--brand);border-right-color:transparent;
  display:inline-block;animation:solcSpin 1s linear infinite;
}
@keyframes solcSpin{to{transform:rotate(360deg)}}

#solcontact .solc-stage-body{
  margin:0 0 0 34px;max-height:0;overflow:hidden;opacity:0;
  transition:max-height .3s ease,opacity .3s ease,margin .3s ease;
}
#solcontact .solc-stage-body.show{max-height:1400px;opacity:1;margin-top:12px}

/* stage 1 — key/value grid */
#solcontact .solc-kvs{display:flex;flex-wrap:wrap;gap:8px}
#solcontact .solc-kv{
  display:flex;flex-direction:column;gap:3px;min-width:130px;flex:1;
  background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);
  padding:9px 12px;
}
#solcontact .solc-kv-k{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
#solcontact .solc-kv-v{font-size:14px;font-weight:600;color:var(--text)}
#solcontact .solc-kv.urg-hi{background:rgba(245,158,11,.10);border-color:rgba(245,158,11,.28)}
#solcontact .solc-kv.urg-hi .solc-kv-v{color:var(--warn)}
#solcontact .solc-kv.urg-mid .solc-kv-v{color:var(--brand-2)}
#solcontact .solc-kv.urg-lo .solc-kv-v{color:var(--ok)}

/* stage 2 — sentiment */
#solcontact .solc-sent-row{display:flex;align-items:center;gap:12px;margin-bottom:10px}
#solcontact .solc-sent-badge{
  font:700 12px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  border-radius:var(--radius-pill);padding:6px 13px;flex:0 0 auto;
}
#solcontact .solc-sent-badge.neg{color:#fff;background:var(--warn)}
#solcontact .solc-sent-badge.neu{color:var(--text-2);background:var(--panel-2);border:1px solid var(--line)}
#solcontact .solc-sent-badge.pos{color:#fff;background:var(--ok)}
#solcontact .solc-meter{flex:1;height:10px;border-radius:var(--radius-pill);background:var(--panel-2);border:1px solid var(--line);overflow:hidden;min-width:80px}
#solcontact .solc-meter-fill{height:100%;border-radius:var(--radius-pill);transition:width .5s ease}
#solcontact .solc-meter-fill.neg{background:linear-gradient(90deg,#F59E0B,#EC4899)}
#solcontact .solc-meter-fill.neu{background:var(--brand-2)}
#solcontact .solc-meter-fill.pos{background:var(--ok)}
#solcontact .solc-sent-score{font:700 14px/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text);flex:0 0 auto;min-width:28px;text-align:right}
#solcontact .solc-points{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:5px}
#solcontact .solc-points li{font-size:13px;color:var(--text-2);line-height:1.55;font-weight:500}

/* stage 3 — KB + reply */
#solcontact .solc-kb{
  margin:12px 0 0 34px;background:var(--panel-2);border:1px dashed var(--line-2);
  border-radius:var(--radius);padding:11px 13px;
}
#solcontact .solc-kb-head{font-size:11px;font-weight:700;color:var(--brand);letter-spacing:.02em;margin-bottom:8px}
#solcontact .solc-kb-item{font-size:12px;color:var(--text-2);line-height:1.55;font-weight:500;padding:5px 0;border-top:1px solid var(--line)}
#solcontact .solc-kb-item:first-of-type{border-top:none;padding-top:0}
#solcontact .solc-reply-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:7px}
#solcontact .solc-reply-text{
  background:var(--grad-brand);color:#fff;border-radius:var(--radius-lg);border-bottom-left-radius:6px;
  padding:14px 16px;font-size:14px;line-height:1.65;font-weight:500;white-space:pre-wrap;word-break:break-word;
  box-shadow:0 6px 16px rgba(91,95,199,.22);
}

/* stage 4 — actions */
#solcontact .solc-act-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:6px}
#solcontact .solc-actions-list{margin:0 0 12px;padding-left:20px;display:flex;flex-direction:column;gap:6px}
#solcontact .solc-actions-list li{font-size:13.5px;color:var(--text);line-height:1.55;font-weight:500}
#solcontact .solc-act-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:12px}
#solcontact .solc-tag{
  font:700 11.5px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  border-radius:var(--radius-pill);padding:6px 13px;
}
#solcontact .solc-tag.warn{color:#fff;background:var(--warn)}
#solcontact .solc-tag.ok{color:#fff;background:var(--ok)}
#solcontact .solc-act-reason{font-size:12.5px;color:var(--text-2);font-weight:500}
#solcontact .solc-ticket{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px 13px;
}
#solcontact .solc-ticket-k{font-size:11.5px;font-weight:700;color:var(--muted);flex:0 0 auto}
#solcontact .solc-ticket-v{font-size:14px;font-weight:600;color:var(--text)}

#solcontact .solc-err{
  font-size:13px;color:var(--warn);font-weight:600;
  background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.25);
  border-radius:var(--radius);padding:10px 13px;line-height:1.5;
}

#solcontact .solc-comp{margin-top:12px;display:flex;flex-direction:column;gap:8px}
#solcontact .solc-comp-title{font-size:11px;font-weight:800;color:var(--brand);letter-spacing:.02em}
#solcontact .solc-comp-card{border:1px solid var(--line);border-radius:8px;background:var(--panel-2);padding:10px 12px;display:flex;flex-direction:column;gap:6px;color:var(--text);font-size:12.5px;line-height:1.5}
#solcontact .solc-comp-card.ok{border-color:rgba(16,185,129,.35);background:rgba(16,185,129,.08)}
#solcontact .solc-comp-card.warn{border-color:rgba(245,158,11,.35);background:rgba(245,158,11,.08)}
#solcontact .solc-comp-card.fail{border-color:rgba(239,68,68,.35);background:rgba(239,68,68,.08)}
#solcontact .solc-comp-card b{font-size:12px;color:var(--text)}
#solcontact .solc-comp-card span{color:var(--text-2);font-weight:500}
#solcontact .solc-comp-pills{display:flex;flex-wrap:wrap;gap:6px}
#solcontact .solc-comp-pill{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.55);padding:4px 8px;font-size:11.5px;font-weight:700;color:var(--text-2)}
#solcontact .solc-comp-pill.ok{color:var(--ok);border-color:rgba(16,185,129,.28);background:rgba(16,185,129,.10)}

@media (max-width:640px){
  #solcontact .solc-stage-sub,
  #solcontact .solc-stage-svc,
  #solcontact .solc-stage-body,
  #solcontact .solc-kb{margin-left:0}
  #solcontact .solc-kv{min-width:46%}
}

/* ===== Solution scenario CSS: solcommerce ===== */
/* 跨境出海内容工作室 — Global Commerce Content Studio
 * Every selector prefixed with #solcommerce so it cannot leak. */

#solcommerce strong { color: var(--text); font-weight: 700; }

/* ---- Brief input ---- */
#solcommerce .sc-brief { margin: 4px 0 18px; }
#solcommerce .sc-label {
  display: block; font-size: 13px; font-weight: 600;
  color: var(--text); margin-bottom: 7px;
}
#solcommerce .sc-hint { color: var(--muted); font-weight: 500; font-size: 12px; }
#solcommerce .sc-textarea {
  width: 100%; resize: vertical; min-height: 120px;
  font-family: inherit; font-size: 13px; line-height: 1.55; color: var(--text);
  background: var(--panel-2); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 12px 14px;
}
#solcommerce .sc-textarea:focus {
  outline: none; border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(91, 95, 199, .14);
}
#solcommerce .sc-actions { display: flex; gap: 10px; margin-top: 12px; flex-wrap: wrap; }

/* ---- Pipeline ---- */
#solcommerce .sc-pipeline { display: flex; flex-direction: column; gap: 14px; }

#solcommerce .sc-stage {
  background: var(--panel); border: 1px solid var(--line);
  border-radius: var(--radius-lg); padding: 16px 18px;
  box-shadow: var(--shadow); position: relative;
  transition: border-color .25s, box-shadow .25s;
}
#solcommerce .sc-stage[data-state="running"] {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(91, 95, 199, .12), var(--shadow);
}
#solcommerce .sc-stage[data-state="done"] { border-color: rgba(16, 185, 129, .45); }
#solcommerce .sc-stage[data-state="error"] { border-color: rgba(245, 158, 11, .55); }

#solcommerce .sc-stage-head { display: flex; align-items: center; gap: 12px; }
#solcommerce .sc-stage-no {
  width: 30px; height: 30px; flex-shrink: 0; border-radius: 50%;
  display: grid; place-items: center; font-weight: 700; font-size: 14px; color: #fff;
  background: var(--grad-brand); box-shadow: 0 4px 12px rgba(91, 95, 199, .28);
}
#solcommerce .sc-stage-titles { flex: 1; min-width: 0; }
#solcommerce .sc-stage-title { font-size: 14.5px; font-weight: 700; color: var(--text); }
#solcommerce .sc-stage-tech { font-size: 11.5px; color: var(--muted); margin-top: 2px; }

#solcommerce .sc-state {
  flex-shrink: 0; font-size: 11.5px; font-weight: 600;
  padding: 4px 11px; border-radius: var(--radius-pill);
  background: var(--panel-2); color: var(--text-2); border: 1px solid var(--line);
}
#solcommerce .sc-state-running { color: var(--brand); border-color: var(--line-2); background: rgba(91, 95, 199, .10); }
#solcommerce .sc-state-done { color: var(--ok); border-color: rgba(16, 185, 129, .35); background: rgba(16, 185, 129, .10); }
#solcommerce .sc-state-error { color: var(--warn); border-color: rgba(245, 158, 11, .40); background: rgba(245, 158, 11, .12); }

#solcommerce .sc-stage-body { margin-top: 12px; font-size: 13px; line-height: 1.55; }
#solcommerce .sc-muted { color: var(--text-2); font-size: 12.5px; }

/* ---- Spinner / running ---- */
#solcommerce .sc-running { display: flex; align-items: center; gap: 9px; color: var(--brand); font-size: 13px; }
#solcommerce .sc-spinner {
  width: 15px; height: 15px; border-radius: 50%;
  border: 2px solid rgba(91, 95, 199, .25); border-top-color: var(--brand);
  animation: scSpin .8s linear infinite; flex-shrink: 0;
}
#solcommerce .sc-spinner.big { width: 30px; height: 30px; border-width: 3px; }
@keyframes scSpin { to { transform: rotate(360deg); } }

#solcommerce .sc-error { color: var(--warn); font-size: 13px; font-weight: 500; }

/* ---- Stage 1: positioning ---- */
#solcommerce .sc-pos-slogan {
  font-size: 17px; font-weight: 700; color: var(--brand);
  text-align: center; padding: 10px 8px 14px; line-height: 1.4;
}
#solcommerce .sc-pos-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 18px; }
#solcommerce .sc-pos-k {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--muted); margin: 0 0 6px;
}
#solcommerce .sc-pos-col .sc-pos-k:not(:first-child) { margin-top: 14px; }
#solcommerce .sc-pos-v { font-size: 13px; color: var(--text); line-height: 1.55; }
#solcommerce .sc-pos-en { color: var(--text-2); font-style: italic; }
#solcommerce .sc-sellers { margin: 0; padding-left: 18px; }
#solcommerce .sc-sellers li { font-size: 13px; color: var(--text); line-height: 1.7; }

/* ---- Stage 2: markets ---- */
#solcommerce .sc-markets { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
#solcommerce .sc-market {
  background: var(--panel-2); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 14px; display: flex; flex-direction: column; gap: 8px;
}
#solcommerce .sc-market-h { display: flex; align-items: center; gap: 7px; }
#solcommerce .sc-flag { font-size: 18px; }
#solcommerce .sc-market-name { font-weight: 700; font-size: 13.5px; color: var(--text); }
#solcommerce .sc-market-lang {
  margin-left: auto; font-size: 10.5px; font-weight: 700; color: var(--brand);
  background: rgba(91, 95, 199, .10); border: 1px solid var(--line);
  padding: 2px 8px; border-radius: var(--radius-pill);
}
#solcommerce .sc-market-headline { font-size: 14px; font-weight: 700; color: var(--text); line-height: 1.4; }
#solcommerce .sc-market-body { font-size: 12.5px; color: var(--text-2); line-height: 1.6; flex: 1; }
#solcommerce .sc-market-cta {
  align-self: flex-start; font-size: 12px; font-weight: 600; color: #fff;
  background: var(--grad-cta); padding: 6px 14px; border-radius: var(--radius-pill);
  box-shadow: 0 4px 12px rgba(91, 95, 199, .26);
}

/* ---- Stage 3: image ---- */
#solcommerce .sc-img-wrap { display: flex; flex-direction: column; gap: 12px; }
#solcommerce .sc-img-loading {
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  padding: 28px 10px; text-align: center;
  background: var(--panel-2); border: 1px dashed var(--line-2); border-radius: var(--radius);
}
#solcommerce .sc-img-load-t { font-size: 13.5px; font-weight: 600; color: var(--text); }
#solcommerce .sc-img-load-s { font-size: 12px; color: var(--muted); }
#solcommerce .sc-img-timer { font-size: 12.5px; font-weight: 700; color: var(--brand); margin-top: 2px; }

#solcommerce .sc-img-prompt {
  font-size: 11.5px; color: var(--text-2); line-height: 1.55;
  background: var(--panel-2); border: 1px solid var(--line);
  border-radius: 10px; padding: 10px 12px;
}
#solcommerce .sc-img-prompt b { color: var(--text); }

#solcommerce .sc-figure { margin: 0; }
#solcommerce .sc-hero-img {
  width: 100%; height: auto; display: block;
  border-radius: var(--radius); border: 1px solid var(--line); box-shadow: var(--shadow);
}
#solcommerce .sc-fig-cap { font-size: 11.5px; color: var(--muted); margin-top: 8px; text-align: center; }
#solcommerce .sc-prompt-details { margin-top: 10px; }
#solcommerce .sc-prompt-details summary {
  cursor: pointer; font-size: 12px; font-weight: 600; color: var(--brand); user-select: none;
}
#solcommerce .sc-prompt-details summary:hover { text-decoration: underline; }
#solcommerce .sc-prompt-details .sc-img-prompt { margin-top: 8px; }

/* ---- responsive ---- */
@media (max-width: 760px) {
  #solcommerce .sc-pos-grid { grid-template-columns: 1fr; }
  #solcommerce .sc-markets { grid-template-columns: 1fr; }
}

/* ===== Solution scenario CSS: soldocflow ===== */
/* 智能文档处理与合规 — scoped to #soldocflow */
#soldocflow .sdf-input{display:flex;flex-direction:column;gap:0}
#soldocflow .sdf-hint{
  margin-top:10px;font-size:12.5px;color:var(--text-2);background:var(--panel-2);
  border:1px dashed var(--line-2);border-radius:var(--radius);padding:10px 14px;font-weight:500;
}
#soldocflow .sdf-hint-flash{
  border-color:var(--warn);color:var(--warn);
  animation:sdf-flash .6s ease;
}
@keyframes sdf-flash{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}

#soldocflow .sdf-preview{
  margin-top:14px;background:var(--panel-2);border:1px solid var(--line);
  border-radius:var(--radius);padding:12px;max-width:420px;
}
#soldocflow .sdf-preview img{
  max-width:100%;max-height:240px;display:block;border-radius:10px;
  border:1px solid var(--line);background:#fff;
}
#soldocflow .sdf-fname{font-size:11.5px;color:var(--muted);margin-top:8px;font-weight:500;word-break:break-all}

/* Pipeline */
#soldocflow .sdf-pipe{
  display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px;align-items:start;
}
#soldocflow .sdf-stage{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:16px;min-height:160px;transition:border-color .2s ease,box-shadow .2s ease;
}
#soldocflow .sdf-stage[data-state="running"]{border-color:var(--brand);box-shadow:0 0 0 4px rgba(91,95,199,.10)}
#soldocflow .sdf-stage[data-state="done"]{border-color:rgba(16,185,129,.45)}
#soldocflow .sdf-stage[data-state="error"]{border-color:rgba(245,158,11,.5)}

#soldocflow .sdf-stage-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
#soldocflow .sdf-num{
  width:26px;height:26px;flex:0 0 26px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:700;color:#fff;background:var(--grad-brand);box-shadow:0 4px 10px rgba(91,95,199,.28);
}
#soldocflow .sdf-stage-title{min-width:0;flex:1}
#soldocflow .sdf-stage-name{font-size:14px;font-weight:700;color:var(--text);line-height:1.2}
#soldocflow .sdf-stage-sub{font-size:11px;color:var(--muted);margin-top:2px;font-weight:500}

#soldocflow .sdf-pill{
  font-size:11px;font-weight:600;padding:4px 10px;border-radius:var(--radius-pill);
  background:var(--panel-2);color:var(--text-2);border:1px solid var(--line);white-space:nowrap;
}
#soldocflow .sdf-stage[data-state="running"] .sdf-pill{background:rgba(91,95,199,.12);color:var(--brand);border-color:rgba(91,95,199,.25)}
#soldocflow .sdf-stage[data-state="done"] .sdf-pill{background:rgba(16,185,129,.12);color:var(--ok);border-color:rgba(16,185,129,.3)}
#soldocflow .sdf-stage[data-state="error"] .sdf-pill{background:rgba(245,158,11,.14);color:var(--warn);border-color:rgba(245,158,11,.35)}

#soldocflow .sdf-stage-body{font-size:13px;color:var(--text)}
#soldocflow .sdf-empty{color:var(--muted);font-size:12.5px;line-height:1.65}
#soldocflow .sdf-empty.small{font-size:12px;margin-bottom:6px}

#soldocflow .sdf-running{display:flex;align-items:center;gap:10px;color:var(--brand);font-size:12.5px;font-weight:600;padding:8px 0}
#soldocflow .sdf-spin{
  width:14px;height:14px;border-radius:50%;border:2px solid var(--brand);border-right-color:transparent;
  animation:spin 1s linear infinite;flex:0 0 14px;
}

/* key/value table */
#soldocflow table.sdf-kv{width:100%;border-collapse:collapse;font-size:12.5px}
#soldocflow table.sdf-kv th{
  text-align:left;color:var(--text-2);font-weight:600;white-space:nowrap;
  padding:6px 10px 6px 0;vertical-align:top;width:42%;border-bottom:1px solid var(--line);
}
#soldocflow table.sdf-kv td{
  color:var(--text);font-weight:500;padding:6px 0;vertical-align:top;
  border-bottom:1px solid var(--line);word-break:break-word;
}
#soldocflow table.sdf-kv tr:last-child th,#soldocflow table.sdf-kv tr:last-child td{border-bottom:none}

#soldocflow .sdf-sub-label{margin-top:14px}

/* item / check tables */
#soldocflow table.sdf-items{
  width:100%;border-collapse:collapse;font-size:12px;margin-top:6px;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden;
}
#soldocflow table.sdf-items thead th{
  background:var(--panel-2);color:var(--text-2);font-weight:600;text-align:left;
  padding:7px 9px;border-bottom:1px solid var(--line);white-space:nowrap;
}
#soldocflow table.sdf-items td{padding:7px 9px;border-bottom:1px solid var(--line);color:var(--text);font-weight:500;vertical-align:top}
#soldocflow table.sdf-items tbody tr:last-child td{border-bottom:none}

#soldocflow .sdf-na{color:var(--muted)}

/* result/risk tags */
#soldocflow .sdf-tag{
  display:inline-block;font-size:11px;font-weight:600;padding:2px 9px;border-radius:var(--radius-pill);
  background:var(--panel-2);color:var(--text-2);border:1px solid var(--line);white-space:nowrap;
}
#soldocflow .sdf-tag.big{font-size:13px;padding:3px 14px}
#soldocflow .sdf-tag.ok{background:rgba(16,185,129,.12);color:var(--ok);border-color:rgba(16,185,129,.3)}
#soldocflow .sdf-tag.warn{background:rgba(245,158,11,.14);color:var(--warn);border-color:rgba(245,158,11,.35)}
#soldocflow .sdf-tag.fail{background:rgba(236,72,153,.12);color:var(--accent,#EC4899);border-color:rgba(236,72,153,.3)}

#soldocflow .sdf-conclusion,#soldocflow .sdf-summary{
  margin-top:12px;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;font-size:12.5px;line-height:1.6;color:var(--text);font-weight:500;
}
#soldocflow .sdf-conclusion .label,#soldocflow .sdf-summary .label{display:block;margin-bottom:4px}

#soldocflow .sdf-risk-head{font-size:13px;font-weight:600;color:var(--text-2);display:flex;align-items:center;gap:10px;margin-bottom:4px}
#soldocflow ul.sdf-risks{margin:6px 0 0;padding-left:18px;font-size:12.5px;line-height:1.7;color:var(--text)}
#soldocflow ul.sdf-risks li{margin-bottom:3px}

#soldocflow pre.sdf-raw{
  margin:6px 0 0;white-space:pre-wrap;word-break:break-word;
  background:var(--bg);border:1px solid var(--line);border-radius:10px;
  padding:10px;color:var(--text);font:11.5px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;
  max-height:220px;overflow:auto;
}

@media (max-width:900px){
  #soldocflow .sdf-pipe{grid-template-columns:1fr}
}

/* ===== Solution scenario CSS: solknow ===== */
/* 企业知识 Copilot scenario — every selector scoped to #solknow. Reuses studio tokens. */

#solknow .sk-ask{
  display:flex;flex-direction:column;gap:10px;margin-top:4px;
  background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px;
}
#solknow .sk-ask textarea{
  width:100%;resize:vertical;min-height:46px;border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;font:inherit;font-size:14px;background:#fff;color:var(--text);line-height:1.5;
}
#solknow .sk-ask textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.15)}
#solknow .sk-ask-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
#solknow .sk-corpus-tag{margin-right:auto;font-size:12px;color:var(--text-2)}
#solknow .sk-corpus-tag b{color:var(--brand);font-weight:700}

#solknow .sk-examples{margin-top:14px}
#solknow .sk-examples .label{font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:8px}
#solknow .sk-chips{display:flex;flex-wrap:wrap;gap:8px}
#solknow .sk-chip{
  font:inherit;font-size:12.5px;font-weight:500;cursor:pointer;
  color:var(--brand);background:rgba(91,95,199,.08);border:1px solid rgba(91,95,199,.22);
  border-radius:999px;padding:7px 13px;transition:all .15s ease;
}
#solknow .sk-chip:hover{background:rgba(91,95,199,.16);transform:translateY(-1px)}

#solknow .sk-pipeline{margin-top:18px;display:flex;flex-direction:column;gap:14px}

#solknow .sk-stage{
  border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:hidden;
  transition:border-color .2s ease,box-shadow .2s ease;
}
#solknow .sk-stage[data-state="running"]{border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.12)}
#solknow .sk-stage[data-state="done"]{border-color:rgba(16,185,129,.45)}
#solknow .sk-stage[data-state="error"]{border-color:rgba(245,158,11,.55)}

#solknow .sk-stage-h{
  display:flex;align-items:center;gap:10px;font-size:13.5px;font-weight:700;color:var(--text);
  padding:11px 14px;background:var(--panel-2);border-bottom:1px solid var(--line);flex-wrap:wrap;
}
#solknow .sk-step{
  display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:0 0 22px;
  border-radius:50%;background:var(--grad-brand,linear-gradient(135deg,var(--brand),var(--brand-3)));
  color:#fff;font-size:12px;font-weight:700;
}
#solknow .sk-stage-title{font-weight:700}
#solknow .sk-stage-meta{font-size:11.5px;font-weight:500;color:var(--muted)}
#solknow .sk-state-pill{
  margin-left:auto;font-size:11px;font-weight:600;border-radius:999px;padding:3px 11px;
  color:var(--text-2);background:rgba(91,95,199,.10);border:1px solid var(--line);white-space:nowrap;
}
#solknow .sk-stage[data-state="running"] .sk-state-pill{color:var(--brand);background:rgba(91,95,199,.16);border-color:rgba(91,95,199,.3)}
#solknow .sk-stage[data-state="done"] .sk-state-pill{color:var(--ok);background:rgba(16,185,129,.12);border-color:rgba(16,185,129,.3)}
#solknow .sk-stage[data-state="error"] .sk-state-pill{color:var(--warn);background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.35)}

#solknow .sk-stage-body{padding:12px 14px}
#solknow .sk-placeholder{font-size:12.5px;color:var(--muted)}

#solknow .sk-hits{display:flex;flex-direction:column;gap:10px}
#solknow .sk-hit{
  border:1px solid var(--line);border-left:3px solid var(--brand-2);
  border-radius:10px;padding:10px 12px;background:var(--panel-2);
}
#solknow .sk-hit-h{display:flex;align-items:center;gap:8px;margin-bottom:5px;flex-wrap:wrap}
#solknow .sk-hit-n{font-size:11px;font-weight:700;color:#fff;background:var(--brand-2);border-radius:6px;padding:1px 7px}
#solknow .sk-hit-title{font-size:13px;font-weight:700;color:var(--text)}
#solknow .sk-hit-score{margin-left:auto;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
#solknow .sk-hit-text{font-size:12.5px;line-height:1.6;color:var(--text-2)}

#solknow .sk-answer-body{font-size:14px;line-height:1.75;color:var(--text)}
#solknow .sk-cite{
  font-size:11.5px;font-weight:600;color:var(--brand-2);
  background:rgba(15,108,189,.10);border:1px solid rgba(15,108,189,.22);
  border-radius:6px;padding:1px 6px;margin:0 1px;white-space:nowrap;
}

#solknow .sk-langs{display:flex;flex-direction:column;gap:12px}
#solknow .sk-lang{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel-2)}
#solknow .sk-lang-h{
  display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;color:var(--text);
  padding:8px 12px;background:rgba(91,95,199,.06);border-bottom:1px solid var(--line);
}
#solknow .sk-flag{font-size:14px}
#solknow .sk-lang-body{padding:10px 12px;font-size:13.5px;line-height:1.7;color:var(--text)}

#solknow .sk-loading{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px}
#solknow .sk-spin{
  display:inline-block;width:13px;height:13px;border-radius:50%;
  border:2px solid var(--brand);border-top-color:transparent;animation:solknowSpin .7s linear infinite;
}
@keyframes solknowSpin{to{transform:rotate(360deg)}}

#solknow .sk-err{font-size:13px;color:var(--warn);line-height:1.6}
#solknow .sk-err-sub{font-size:12px;color:var(--text-2)}

#solknow .status b{color:var(--brand);font-weight:700}

/* ===== Solution scenario CSS: solvisionqc ===== */
/* 视觉质检 · Visual Quality Inspection — scoped to #solvisionqc. Native Demo Studio look. */

/* ---- input row ---- */
#solvisionqc .vqc-input{
  display:grid;grid-template-columns:minmax(240px,340px) 1fr;gap:20px;align-items:start;margin:4px 0 18px;
}
@media (max-width:760px){
  #solvisionqc .vqc-input{grid-template-columns:1fr}
}
#solvisionqc .vqc-input-left{display:flex;flex-direction:column;gap:10px}
#solvisionqc .vqc-input-right{display:flex;flex-direction:column;gap:10px;min-width:0}

/* ---- drop zone (upload-box) ---- */
#solvisionqc .vqc-drop{
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  border:2px dashed var(--line);border-radius:var(--radius-lg);
  background:linear-gradient(180deg,rgba(91,95,199,.04),transparent 70%),var(--bg);
  min-height:200px;padding:16px;text-align:center;position:relative;overflow:hidden;
  transition:all .16s ease;
}
#solvisionqc .vqc-drop:hover{border-color:var(--brand);background:rgba(91,95,199,.05)}
#solvisionqc .vqc-drop.dragover{border-color:var(--brand);background:rgba(91,95,199,.10);transform:scale(1.004)}
#solvisionqc .vqc-drop.has-image{padding:0;border-style:solid;border-color:var(--brand)}
#solvisionqc .vqc-drop.shake{animation:vqcShake .45s ease}
@keyframes vqcShake{
  0%,100%{transform:translateX(0)}
  20%,60%{transform:translateX(-6px)}
  40%,80%{transform:translateX(6px)}
}
#solvisionqc .vqc-drop-empty{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text-2);pointer-events:none}
#solvisionqc .vqc-drop-ico{font-size:34px;line-height:1}
#solvisionqc .vqc-drop-t{font-size:14px;font-weight:600;color:var(--text)}
#solvisionqc .vqc-drop-s{font-size:11.5px;color:var(--muted)}
#solvisionqc .vqc-thumb{display:block;width:100%;max-height:320px;object-fit:contain;background:#0b0b0f;border-radius:var(--radius-lg)}

#solvisionqc .vqc-fileinfo{
  font-size:12px;color:var(--ok);font-weight:500;
  background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.22);
  border-radius:var(--radius);padding:8px 11px;word-break:break-all;
}
#solvisionqc .vqc-clear{align-self:flex-start;font-size:12px;padding:8px 14px}

/* ---- profile select + actions ---- */
#solvisionqc .label{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--brand);font-weight:700}
#solvisionqc .vqc-select{
  width:100%;font:14px/1.5 "Segoe UI Variable","Segoe UI",system-ui;
  background:var(--panel);color:var(--text);
  border:1.5px solid var(--line);border-radius:var(--radius);padding:11px 12px;cursor:pointer;
}
#solvisionqc .vqc-select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(91,95,199,.12)}
#solvisionqc .vqc-profile-desc{
  font-size:12px;line-height:1.6;color:var(--text-2);
  background:var(--bg);border-left:3px solid var(--brand);border-radius:6px;padding:9px 12px;
}
#solvisionqc .vqc-actions{display:flex;gap:10px;align-items:center;margin-top:2px;flex-wrap:wrap}

/* ---- pipeline ---- */
#solvisionqc .vqc-pipeline{display:flex;flex-direction:column;gap:14px}
#solvisionqc .vqc-stage{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:14px 16px;transition:border-color .18s ease,box-shadow .18s ease;
}
#solvisionqc .vqc-stage[data-state="running"]{border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.12)}
#solvisionqc .vqc-stage[data-state="done"]{border-color:rgba(16,185,129,.45)}
#solvisionqc .vqc-stage[data-state="fail"]{border-color:rgba(245,158,11,.55)}

#solvisionqc .vqc-stage-head{display:flex;align-items:center;gap:12px}
#solvisionqc .vqc-stage-no{
  width:28px;height:28px;flex:0 0 28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:700;color:#fff;background:var(--grad-brand,linear-gradient(135deg,#5B5FC7,#0F6CBD));
}
#solvisionqc .vqc-stage-titles{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
#solvisionqc .vqc-stage-title{font-size:14px;font-weight:700;color:var(--text)}
#solvisionqc .vqc-stage-tech{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.01em}

#solvisionqc .vqc-state{
  font-size:11.5px;font-weight:700;padding:5px 12px;border-radius:var(--radius-pill);
  background:var(--panel-2);color:var(--text-2);border:1px solid var(--line);white-space:nowrap;
}
#solvisionqc .vqc-stage[data-state="running"] .vqc-state{
  background:rgba(91,95,199,.12);color:var(--brand);border-color:rgba(91,95,199,.30);
}
#solvisionqc .vqc-stage[data-state="running"] .vqc-state::before{
  content:"";display:inline-block;width:9px;height:9px;margin-right:6px;vertical-align:-1px;
  border-radius:50%;border:2px solid var(--brand);border-right-color:transparent;
  animation:vqcSpin 1s linear infinite;
}
@keyframes vqcSpin{to{transform:rotate(360deg)}}
#solvisionqc .vqc-stage[data-state="done"] .vqc-state{background:rgba(16,185,129,.12);color:var(--ok);border-color:rgba(16,185,129,.30)}
#solvisionqc .vqc-stage[data-state="fail"] .vqc-state{background:rgba(245,158,11,.14);color:var(--warn);border-color:rgba(245,158,11,.35)}

#solvisionqc .vqc-stage-body{margin-top:12px}
#solvisionqc .vqc-muted{font-size:12.5px;color:var(--text-2);line-height:1.6}

/* ---- result blocks ---- */
#solvisionqc .vqc-kv{display:flex;gap:8px;font-size:13px;color:var(--text-2);margin-bottom:6px}
#solvisionqc .vqc-kv b{color:var(--text)}
#solvisionqc .vqc-sub{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--brand);font-weight:700;margin:12px 0 6px;display:flex;align-items:center;gap:8px}
#solvisionqc .vqc-count{font-size:10.5px;color:var(--muted);font-weight:600;letter-spacing:0;text-transform:none}
#solvisionqc .vqc-list{margin:0;padding-left:20px;font-size:13px;line-height:1.7;color:var(--text)}
#solvisionqc .vqc-list.ol{padding-left:22px}
#solvisionqc .vqc-list li{margin:2px 0}

#solvisionqc .vqc-table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:4px}
#solvisionqc .vqc-table th,#solvisionqc .vqc-table td{
  text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top;
}
#solvisionqc .vqc-table th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700}
#solvisionqc .vqc-table td{color:var(--text)}
#solvisionqc .vqc-sev{display:inline-block;font-size:11px;font-weight:700;padding:3px 9px;border-radius:var(--radius-pill);white-space:nowrap}
#solvisionqc .vqc-sev.low{background:rgba(16,185,129,.12);color:var(--ok)}
#solvisionqc .vqc-sev.mid{background:rgba(245,158,11,.14);color:var(--warn)}
#solvisionqc .vqc-sev.high{background:rgba(236,72,153,.14);color:var(--accent)}
#solvisionqc .vqc-ok-line{font-size:13px;color:var(--ok);font-weight:600}

#solvisionqc .vqc-tags{display:flex;flex-wrap:wrap;gap:7px}
#solvisionqc .vqc-tag{font-size:11.5px;font-weight:600;color:var(--brand);background:rgba(91,95,199,.10);border:1px solid rgba(91,95,199,.22);border-radius:var(--radius-pill);padding:4px 11px}

/* ---- verdict badge (stage 2) ---- */
#solvisionqc .vqc-verdict{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
#solvisionqc .vqc-verdict-badge{
  font-size:20px;font-weight:800;letter-spacing:.04em;padding:10px 22px;border-radius:var(--radius);color:#fff;
}
#solvisionqc .vqc-verdict.pass .vqc-verdict-badge{background:linear-gradient(135deg,#10B981,#059669)}
#solvisionqc .vqc-verdict.warn .vqc-verdict-badge{background:linear-gradient(135deg,#F59E0B,#D97706)}
#solvisionqc .vqc-verdict.fail .vqc-verdict-badge{background:linear-gradient(135deg,#EF4444,#EC4899)}
#solvisionqc .vqc-conf{font-size:13px;font-weight:700;color:var(--text-2)}

/* ---- disposition (stage 3) ---- */
#solvisionqc .vqc-disp{font-size:14px;color:var(--text);padding:10px 14px;border-radius:var(--radius);font-weight:600}
#solvisionqc .vqc-disp b{font-size:16px;font-weight:800}
#solvisionqc .vqc-disp.pass{background:rgba(16,185,129,.10);border:1px solid rgba(16,185,129,.28);color:var(--ok)}
#solvisionqc .vqc-disp.warn{background:rgba(245,158,11,.10);border:1px solid rgba(245,158,11,.30);color:var(--warn)}
#solvisionqc .vqc-disp.fail{background:rgba(236,72,153,.10);border:1px solid rgba(236,72,153,.30);color:var(--accent)}
#solvisionqc .vqc-concl{font-size:13.5px;line-height:1.7;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:11px 13px}

/* ---- raw fallback ---- */
#solvisionqc .vqc-note{font-size:12px;color:var(--warn);font-weight:600;margin-bottom:6px}
#solvisionqc .vqc-raw{white-space:pre-wrap;font:12px/1.6 ui-monospace,Consolas,monospace;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:11px 13px;margin:0;max-height:300px;overflow:auto}

#solcontact [hidden],#solcommerce [hidden],#soldocflow [hidden],#solknow [hidden],#solvisionqc [hidden]{display:none!important}

/* ===== Solution scenario fragment: soldata ===== */
/* Fabric 数据智能体 — solution scenario, scoped to #soldata */

#soldata .sold-note{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;
  background:rgba(15,108,189,.07);border:1px solid rgba(15,108,189,.22);
  border-radius:var(--radius);padding:11px 14px;margin-bottom:14px;
  font:500 12.5px/1.6 "Segoe UI Variable","Inter","Segoe UI",system-ui;color:var(--text-2);
}
#soldata .sold-note-badge{
  font:700 10.5px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  color:#fff;background:var(--brand-2);border-radius:var(--radius-pill);
  padding:4px 10px;letter-spacing:.04em;flex:0 0 auto;
}

#soldata .sold-fabric{
  border:1px dashed var(--line-2);border-radius:var(--radius-lg);
  background:var(--panel-2);padding:13px 15px;margin-bottom:16px;
}
#soldata .sold-fabric-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:10px}
#soldata .sold-fabric-title{font-weight:700;font-size:13px;color:var(--text)}
#soldata .sold-fabric-tag{
  font:700 10px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  color:var(--warn);background:rgba(245,158,11,.10);border:1px solid rgba(245,158,11,.28);
  border-radius:var(--radius-pill);padding:4px 9px;letter-spacing:.03em;
}
#soldata .sold-fabric-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
#soldata .sold-fabric-input{
  flex:1;min-width:180px;box-sizing:border-box;border:1.5px solid var(--line);
  border-radius:var(--radius);background:var(--bg);color:var(--text-2);outline:none;
  font:500 12px/1.4 "Segoe UI Variable","Inter","Segoe UI",system-ui;padding:9px 12px;
}
#soldata .sold-fabric-input:disabled{opacity:.6;cursor:not-allowed}
#soldata #soldata-fabric-btn{flex:0 0 auto}
#soldata .sold-fabric-hint{font-size:11px;color:var(--muted);margin-top:9px;line-height:1.5}

#soldata .sold-input{
  border:1.5px solid var(--line);border-radius:var(--radius-lg);
  background:var(--panel);padding:14px;box-shadow:var(--shadow);margin-bottom:14px;
}
#soldata .sold-input-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:10px}
#soldata .sold-input-head .label{font-weight:700;color:var(--text);font-size:13px;display:flex;align-items:center;gap:8px}
#soldata .sold-chip-tag{
  font:600 10.5px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  color:var(--ok);background:rgba(16,185,129,.10);border:1px solid rgba(16,185,129,.22);
  border-radius:var(--radius-pill);padding:3px 9px;letter-spacing:.02em;
}
#soldata .sold-presets{display:flex;flex-wrap:wrap;gap:8px}
#soldata .sold-chip{
  font:600 12px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  border:1.5px solid var(--line);background:var(--panel);color:var(--text-2);
  border-radius:var(--radius-pill);padding:7px 13px;cursor:pointer;
  transition:all .15s ease;white-space:nowrap;
}
#soldata .sold-chip:hover{background:var(--panel-2);border-color:var(--brand);color:var(--brand);transform:translateY(-1px)}
#soldata .sold-chip.active{
  background:var(--grad-brand);border-color:transparent;color:#fff;
  box-shadow:0 6px 16px rgba(91,95,199,.28);
}
#soldata #soldata-q{
  width:100%;box-sizing:border-box;border:1.5px solid var(--line);border-radius:var(--radius);
  background:var(--bg);color:var(--text);resize:vertical;outline:none;
  font:500 14px/1.6 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  padding:12px 14px;min-height:60px;
}
#soldata #soldata-q:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.12)}
#soldata #soldata-q:disabled{opacity:.65}
#soldata .sold-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:12px}

/* schema reference */
#soldata .sold-schema{
  background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);
  padding:12px 14px;margin-bottom:16px;
}
#soldata .sold-schema-head{font-size:11px;font-weight:700;color:var(--brand);letter-spacing:.02em;margin-bottom:9px}
#soldata .sold-schema-grid{display:flex;flex-wrap:wrap;gap:8px}
#soldata .sold-field{
  display:flex;flex-direction:column;gap:2px;min-width:120px;flex:1;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:8px 11px;
}
#soldata .sold-field-n{font-size:13px;font-weight:700;color:var(--text)}
#soldata .sold-field-t{font-size:10.5px;font-weight:600;color:var(--muted);letter-spacing:.02em}
#soldata .sold-field-t.dim{color:var(--brand-2)}
#soldata .sold-field-t.measure{color:var(--accent)}
#soldata .sold-field-vals{font-size:11px;color:var(--text-2);line-height:1.45}

#soldata .sold-pipeline{display:flex;flex-direction:column;gap:14px}
#soldata .sold-stage{
  border:1.5px solid var(--line);border-radius:var(--radius-lg);
  background:var(--panel);box-shadow:var(--shadow);padding:14px 16px;
  transition:border-color .2s ease,box-shadow .2s ease;
}
#soldata .sold-stage[data-active="1"]{
  border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.12),var(--shadow);
}
#soldata .sold-stage-h{display:flex;align-items:center;gap:10px}
#soldata .sold-stage-no{
  width:24px;height:24px;flex:0 0 24px;border-radius:50%;
  background:var(--grad-brand);color:#fff;font:700 12px/24px "Segoe UI Variable","Segoe UI",system-ui;
  text-align:center;box-shadow:0 4px 10px rgba(91,95,199,.28);
}
#soldata .sold-stage-title{font-weight:700;font-size:14.5px;color:var(--text);flex:1}
#soldata .sold-stage-state{
  font:700 11px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  display:inline-flex;align-items:center;gap:6px;
  border-radius:var(--radius-pill);padding:5px 11px;letter-spacing:.02em;
  border:1px solid var(--line);color:var(--muted);background:var(--panel-2);
}
#soldata .sold-stage-state[data-state="run"]{color:var(--brand);border-color:rgba(91,95,199,.3);background:rgba(91,95,199,.08)}
#soldata .sold-stage-state[data-state="done"]{color:var(--ok);border-color:rgba(16,185,129,.25);background:rgba(16,185,129,.10)}
#soldata .sold-stage-state[data-state="error"]{color:var(--warn);border-color:rgba(245,158,11,.28);background:rgba(245,158,11,.10)}
#soldata .sold-stage-sub{font-size:11.5px;color:var(--muted);margin:6px 0 0 34px;font-weight:500}

#soldata .sold-spin{
  width:11px;height:11px;border-radius:50%;
  border:2px solid var(--brand);border-right-color:transparent;
  display:inline-block;animation:soldSpin 1s linear infinite;
}
@keyframes soldSpin{to{transform:rotate(360deg)}}

#soldata .sold-stage-body{
  margin:0 0 0 34px;max-height:0;overflow:hidden;opacity:0;
  transition:max-height .35s ease,opacity .35s ease,margin .35s ease;
}
#soldata .sold-stage-body.show{max-height:2200px;opacity:1;margin-top:12px}

/* stage 1 — query plan */
#soldata .sold-plan-title{
  font-size:14px;font-weight:700;color:var(--text);margin-bottom:10px;
  display:flex;align-items:center;gap:8px;
}
#soldata .sold-plan-title::before{content:"🧭";font-size:15px}
#soldata .sold-plan-grid{display:flex;flex-wrap:wrap;gap:8px}
#soldata .sold-plan-kv{
  display:flex;flex-direction:column;gap:3px;min-width:120px;
  background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:8px 12px;
}
#soldata .sold-plan-k{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
#soldata .sold-plan-v{font-size:13px;font-weight:600;color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
#soldata .sold-plan-chart{color:var(--brand)!important;font-family:inherit!important}

/* stage 2 — result table + chart */
#soldata .sold-result-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:16px;align-items:start}
#soldata .sold-result-block-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:8px}
#soldata .sold-table-wrap{overflow:auto;max-height:380px;border:1px solid var(--line);border-radius:var(--radius)}
#soldata table.sold-table{border-collapse:collapse;width:100%;font-size:12.5px}
#soldata table.sold-table th,#soldata table.sold-table td{padding:7px 11px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
#soldata table.sold-table th{position:sticky;top:0;background:var(--panel-2);color:var(--text-2);font-weight:700;font-size:11.5px;z-index:1}
#soldata table.sold-table td{color:var(--text);font-weight:500}
#soldata table.sold-table td.num{text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
#soldata table.sold-table tr:last-child td{border-bottom:none}
#soldata table.sold-table tr:hover td{background:rgba(91,95,199,.05)}
#soldata .sold-chart-box{
  border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);
  padding:12px;min-height:200px;display:flex;flex-direction:column;
}
#soldata .sold-chart-box svg{width:100%;height:auto;display:block;overflow:visible}
#soldata .sold-chart-cap{font-size:11px;color:var(--muted);margin-top:8px;text-align:center}
#soldata .sold-exec-meta{
  margin-top:12px;font-size:12px;color:var(--text-2);font-weight:500;
  background:rgba(16,185,129,.07);border:1px solid rgba(16,185,129,.22);
  border-radius:var(--radius);padding:9px 13px;line-height:1.55;
}
#soldata .sold-exec-meta b{color:var(--ok)}
#soldata .sold-bar-rect{transition:width .5s ease}

/* stage 3 — insight */
#soldata .sold-insight-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:8px}
#soldata .sold-insight-card{
  background:var(--grad-brand);color:#fff;border-radius:var(--radius-lg);
  padding:15px 17px;box-shadow:0 6px 16px rgba(91,95,199,.22);
}
#soldata .sold-insight-card ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px}
#soldata .sold-insight-card li{font-size:13.5px;line-height:1.6;font-weight:500}
#soldata .sold-insight-text{font-size:13.5px;line-height:1.65;font-weight:500;white-space:pre-wrap}
#soldata .sold-grounded{
  margin-top:10px;font-size:11px;color:var(--muted);font-weight:600;
  display:flex;align-items:center;gap:6px;
}
#soldata .sold-grounded::before{content:"🔒";font-size:12px}

#soldata .sold-err{
  font-size:13px;color:var(--warn);font-weight:600;
  background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.25);
  border-radius:var(--radius);padding:10px 13px;line-height:1.5;white-space:pre-wrap;word-break:break-word;
}

@media (max-width:760px){
  #soldata .sold-result-grid{grid-template-columns:1fr}
  #soldata .sold-stage-sub,
  #soldata .sold-stage-body{margin-left:0}
  #soldata .sold-field{min-width:46%}
}

/* ===== Solution scenario fragment: solpii ===== */
/* 智能数据脱敏与隐私合规 — scoped to #solpii */

/* category color tokens (highlight chips / marks) */
#solpii{
  --pii-direct:#EF4444;        /* 直接标识 = 红 */
  --pii-direct-bg:rgba(239,68,68,.12);
  --pii-direct-bd:rgba(239,68,68,.32);
  --pii-quasi:#F59E0B;         /* 准标识 = 琥珀 */
  --pii-quasi-bg:rgba(245,158,11,.13);
  --pii-quasi-bd:rgba(245,158,11,.34);
  --pii-sensitive:#8B5CF6;     /* 敏感 = 紫 */
  --pii-sensitive-bg:rgba(139,92,246,.13);
  --pii-sensitive-bd:rgba(139,92,246,.34);
}

/* ---- input ---- */
#solpii .spii-input{
  border:1.5px solid var(--line);border-radius:var(--radius-lg);
  background:var(--panel);padding:14px;box-shadow:var(--shadow);margin-bottom:16px;
}
#solpii .spii-input-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:10px}
#solpii .spii-input-head .label{font-weight:700;color:var(--text);font-size:13px;display:flex;align-items:center;gap:8px}
#solpii .spii-chip-tag{
  font:600 10.5px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  color:var(--ok);background:rgba(16,185,129,.10);border:1px solid rgba(16,185,129,.22);
  border-radius:var(--radius-pill);padding:3px 9px;letter-spacing:.02em;
}
#solpii .spii-presets{display:flex;flex-wrap:wrap;gap:8px}
#solpii .spii-chip{
  font:600 12px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  border:1.5px solid var(--line);background:var(--panel);color:var(--text-2);
  border-radius:var(--radius-pill);padding:7px 13px;cursor:pointer;
  transition:all .15s ease;white-space:nowrap;
}
#solpii .spii-chip:hover{background:var(--panel-2);border-color:var(--brand);color:var(--brand);transform:translateY(-1px)}
#solpii .spii-chip.active{
  background:var(--grad-brand);border-color:transparent;color:#fff;
  box-shadow:0 6px 16px rgba(91,95,199,.28);
}
#solpii #solpii-text{
  width:100%;box-sizing:border-box;border:1.5px solid var(--line);border-radius:var(--radius);
  background:var(--bg);color:var(--text);resize:vertical;outline:none;
  font:500 14px/1.7 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  padding:12px 14px;min-height:120px;
}
#solpii #solpii-text:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.12)}
#solpii #solpii-text:disabled{opacity:.65}
#solpii .spii-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:12px}

/* ---- pipeline / stage cards ---- */
#solpii .spii-pipeline{display:flex;flex-direction:column;gap:14px}
#solpii .spii-stage{
  border:1.5px solid var(--line);border-radius:var(--radius-lg);
  background:var(--panel);box-shadow:var(--shadow);padding:14px 16px;
  transition:border-color .2s ease,box-shadow .2s ease;
}
#solpii .spii-stage[data-active="1"]{
  border-color:var(--brand);box-shadow:0 0 0 3px rgba(91,95,199,.12),var(--shadow);
}
#solpii .spii-stage-h{display:flex;align-items:center;gap:10px}
#solpii .spii-stage-no{
  width:24px;height:24px;flex:0 0 24px;border-radius:50%;
  background:var(--grad-brand);color:#fff;font:700 12px/24px "Segoe UI Variable","Segoe UI",system-ui;
  text-align:center;box-shadow:0 4px 10px rgba(91,95,199,.28);
}
#solpii .spii-stage-title{font-weight:700;font-size:14.5px;color:var(--text);flex:1}
#solpii .spii-stage-state{
  font:700 11px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  display:inline-flex;align-items:center;gap:6px;
  border-radius:var(--radius-pill);padding:5px 11px;letter-spacing:.02em;
  border:1px solid var(--line);color:var(--muted);background:var(--panel-2);
}
#solpii .spii-stage-state[data-state="run"]{color:var(--brand);border-color:rgba(91,95,199,.3);background:rgba(91,95,199,.08)}
#solpii .spii-stage-state[data-state="done"]{color:var(--ok);border-color:rgba(16,185,129,.25);background:rgba(16,185,129,.10)}
#solpii .spii-stage-state[data-state="error"]{color:var(--warn);border-color:rgba(245,158,11,.28);background:rgba(245,158,11,.10)}
#solpii .spii-stage-sub{font-size:11.5px;color:var(--muted);margin:6px 0 0 34px;font-weight:500}

#solpii .spii-spin{
  width:11px;height:11px;border-radius:50%;
  border:2px solid var(--brand);border-right-color:transparent;
  display:inline-block;animation:spiiSpin 1s linear infinite;
}
@keyframes spiiSpin{to{transform:rotate(360deg)}}

#solpii .spii-stage-body{
  margin:0 0 0 34px;max-height:0;overflow:hidden;opacity:0;
  transition:max-height .35s ease,opacity .35s ease,margin .35s ease;
}
#solpii .spii-stage-body.show{max-height:3000px;opacity:1;margin-top:12px}

#solpii .spii-block-label{font-size:11px;font-weight:700;color:var(--brand);letter-spacing:.02em;margin:14px 0 8px}
#solpii .spii-block-label:first-child{margin-top:0}
#solpii .spii-note{font-size:12.5px;color:var(--text-2);font-weight:500;margin-top:6px}
#solpii .spii-muted{color:var(--text-2)}

/* ---- legend ---- */
#solpii .spii-legend{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
#solpii .spii-leg{
  font:700 11px/1 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  border-radius:var(--radius-pill);padding:5px 11px;display:inline-flex;align-items:center;gap:6px;
}
#solpii .spii-leg::before{content:"";width:9px;height:9px;border-radius:50%}
#solpii .spii-leg.cat-direct{color:var(--pii-direct);background:var(--pii-direct-bg);border:1px solid var(--pii-direct-bd)}
#solpii .spii-leg.cat-direct::before{background:var(--pii-direct)}
#solpii .spii-leg.cat-quasi{color:var(--pii-quasi);background:var(--pii-quasi-bg);border:1px solid var(--pii-quasi-bd)}
#solpii .spii-leg.cat-quasi::before{background:var(--pii-quasi)}
#solpii .spii-leg.cat-sensitive{color:var(--pii-sensitive);background:var(--pii-sensitive-bg);border:1px solid var(--pii-sensitive-bd)}
#solpii .spii-leg.cat-sensitive::before{background:var(--pii-sensitive)}

/* ---- highlighted document ---- */
#solpii .spii-highlight,#solpii .spii-doc{
  border:1.5px solid var(--line);border-radius:var(--radius);
  background:var(--panel-2);padding:14px 16px;
  font:500 14px/2 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  color:var(--text);white-space:pre-wrap;word-break:break-word;
}
#solpii .spii-mark{
  border-radius:6px;padding:1px 4px;font-weight:600;
  position:relative;white-space:nowrap;
  box-decoration-break:clone;-webkit-box-decoration-break:clone;
}
#solpii .spii-mark.cat-direct{background:var(--pii-direct-bg);color:var(--pii-direct);box-shadow:inset 0 0 0 1.5px var(--pii-direct-bd)}
#solpii .spii-mark.cat-quasi{background:var(--pii-quasi-bg);color:var(--pii-quasi);box-shadow:inset 0 0 0 1.5px var(--pii-quasi-bd)}
#solpii .spii-mark.cat-sensitive{background:var(--pii-sensitive-bg);color:var(--pii-sensitive);box-shadow:inset 0 0 0 1.5px var(--pii-sensitive-bd)}
#solpii .spii-mark-tag{
  font:700 9px/1 "Segoe UI Variable","Segoe UI",system-ui;
  margin-left:5px;padding:2px 5px;border-radius:var(--radius-pill);
  background:rgba(255,255,255,.55);color:inherit;vertical-align:middle;letter-spacing:.02em;
}
#solpii .spii-masked{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

/* ---- entity table ---- */
#solpii .spii-table-wrap{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
#solpii .spii-table{width:100%;border-collapse:collapse;font-size:13px}
#solpii .spii-table th{
  text-align:left;font:700 11px/1 "Segoe UI Variable","Segoe UI",system-ui;
  text-transform:uppercase;letter-spacing:.04em;color:var(--muted);
  background:var(--panel-2);padding:9px 12px;border-bottom:1px solid var(--line);
}
#solpii .spii-table td{padding:9px 12px;border-bottom:1px solid var(--line);color:var(--text);vertical-align:middle}
#solpii .spii-table tr:last-child td{border-bottom:none}
#solpii .spii-table code{
  font:600 12.5px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;
  background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:2px 6px;color:var(--text);
}
#solpii .spii-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:middle}
#solpii .spii-dot.cat-direct{background:var(--pii-direct)}
#solpii .spii-dot.cat-quasi{background:var(--pii-quasi)}
#solpii .spii-dot.cat-sensitive{background:var(--pii-sensitive)}
#solpii .spii-cat{font:700 11px/1 "Segoe UI Variable","Segoe UI",system-ui;border-radius:var(--radius-pill);padding:4px 9px}
#solpii .spii-cat.cat-direct{color:var(--pii-direct);background:var(--pii-direct-bg)}
#solpii .spii-cat.cat-quasi{color:var(--pii-quasi);background:var(--pii-quasi-bg)}
#solpii .spii-cat.cat-sensitive{color:var(--pii-sensitive);background:var(--pii-sensitive-bg)}
#solpii .spii-sev{font:700 11px/1 "Segoe UI Variable","Segoe UI",system-ui;border-radius:var(--radius-pill);padding:4px 9px}
#solpii .spii-sev.sev-hi{color:#fff;background:var(--pii-direct)}
#solpii .spii-sev.sev-mid{color:#fff;background:var(--pii-quasi)}
#solpii .spii-sev.sev-lo{color:var(--text-2);background:var(--panel-2);border:1px solid var(--line)}

/* ---- stage 2 risk ---- */
#solpii .spii-risk-top{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:4px}
#solpii .spii-risk-badge{
  display:flex;flex-direction:column;gap:2px;border-radius:var(--radius-lg);
  padding:12px 20px;min-width:120px;color:#fff;box-shadow:var(--shadow);
}
#solpii .spii-risk-badge.risk-hi{background:linear-gradient(135deg,#EF4444,#EC4899)}
#solpii .spii-risk-badge.risk-mid{background:linear-gradient(135deg,#F59E0B,#EC4899)}
#solpii .spii-risk-badge.risk-lo{background:linear-gradient(135deg,#10B981,#0F6CBD)}
#solpii .spii-risk-cap{font:700 10.5px/1 "Segoe UI Variable","Segoe UI",system-ui;text-transform:uppercase;letter-spacing:.06em;opacity:.92}
#solpii .spii-risk-lvl{font:800 26px/1.1 "Segoe UI Variable","Segoe UI",system-ui}
#solpii .spii-counts{display:flex;gap:10px;flex-wrap:wrap}
#solpii .spii-count{
  display:flex;flex-direction:column;align-items:center;gap:2px;min-width:74px;
  border-radius:var(--radius);padding:10px 12px;border:1px solid var(--line);background:var(--panel-2);
}
#solpii .spii-count-n{font:800 22px/1 "Segoe UI Variable","Segoe UI",system-ui}
#solpii .spii-count-k{font:600 11px/1 "Segoe UI Variable","Segoe UI",system-ui;color:var(--muted)}
#solpii .spii-count.cat-direct .spii-count-n{color:var(--pii-direct)}
#solpii .spii-count.cat-quasi .spii-count-n{color:var(--pii-quasi)}
#solpii .spii-count.cat-sensitive .spii-count-n{color:var(--pii-sensitive)}
#solpii .spii-laws{display:flex;flex-wrap:wrap;gap:8px}
#solpii .spii-law{
  font:600 12px/1.3 "Segoe UI Variable","Inter","Segoe UI",system-ui;
  color:var(--brand-2);background:rgba(15,108,189,.10);border:1px solid rgba(15,108,189,.24);
  border-radius:var(--radius-pill);padding:6px 12px;
}
#solpii .spii-tips{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
#solpii .spii-tips li{font-size:13.5px;color:var(--text);line-height:1.55;font-weight:500}

/* ---- stage 3 compare ---- */
#solpii .spii-compare{display:grid;grid-template-columns:1fr 1fr;gap:14px}
#solpii .spii-col{display:flex;flex-direction:column;gap:8px;min-width:0}
#solpii .spii-col-h{
  font:700 11px/1 "Segoe UI Variable","Segoe UI",system-ui;
  text-transform:uppercase;letter-spacing:.04em;border-radius:var(--radius-pill);
  padding:6px 11px;display:inline-flex;align-self:flex-start;
}
#solpii .spii-col-orig{color:var(--pii-direct);background:var(--pii-direct-bg);border:1px solid var(--pii-direct-bd)}
#solpii .spii-col-safe{color:var(--ok);background:rgba(16,185,129,.10);border:1px solid rgba(16,185,129,.24)}
#solpii .spii-redact-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}
#solpii .spii-redact-note{font-size:12px;color:var(--text-2);font-weight:500}
#solpii .spii-copy{white-space:nowrap}

/* ---- error ---- */
#solpii .spii-err{
  font-size:13px;color:var(--warn);font-weight:600;
  background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.25);
  border-radius:var(--radius);padding:10px 13px;line-height:1.5;margin-bottom:10px;
}

@media (max-width:680px){
  #solpii .spii-stage-sub,
  #solpii .spii-stage-body{margin-left:0}
  #solpii .spii-compare{grid-template-columns:1fr}
}

/* Azure Content Safety result card */
#solcommerce .acs-card,#solvisionqc .acs-card{
  margin-top:12px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);padding:10px 12px;
  display:flex;flex-direction:column;gap:6px;color:var(--text);font-size:12.5px;line-height:1.5;
}
#solcommerce .acs-card.ok,#solvisionqc .acs-card.ok{border-color:rgba(16,185,129,.35);background:rgba(16,185,129,.08)}
#solcommerce .acs-card.warn,#solvisionqc .acs-card.warn{border-color:rgba(245,158,11,.35);background:rgba(245,158,11,.08)}
#solcommerce .acs-card.fail,#solvisionqc .acs-card.fail{border-color:rgba(239,68,68,.35);background:rgba(239,68,68,.08)}
#solcommerce .acs-head,#solvisionqc .acs-head{font-weight:800;font-size:12px;color:var(--text)}
#solcommerce .acs-text,#solvisionqc .acs-text{color:var(--text-2);font-weight:500}
#solcommerce .acs-pills,#solvisionqc .acs-pills{display:flex;flex-wrap:wrap;gap:6px}
#solcommerce .acs-pill,#solvisionqc .acs-pill{
  display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.55);
  padding:4px 8px;font-size:11.5px;font-weight:700;color:var(--text-2);
}
#solcommerce .acs-pill.ok,#solvisionqc .acs-pill.ok{color:var(--ok);border-color:rgba(16,185,129,.28);background:rgba(16,185,129,.10)}

/* ===== AI 电话坐席 · ACS + Voice Live (solcall) ===== */
#solcall .panel-sub strong{color:var(--brand)}
#solcall .scall-arch{
  margin:14px 0 18px;padding:16px;border:1px solid var(--line);border-radius:14px;
  background:linear-gradient(180deg,rgba(91,95,199,.05),rgba(91,95,199,.01));
}
#solcall .scall-arch-h{display:flex;flex-direction:column;gap:3px;margin-bottom:14px}
#solcall .scall-arch-title{font-weight:800;font-size:14.5px;color:var(--text)}
#solcall .scall-arch-sub{font-size:12px;color:var(--muted)}
#solcall .scall-arch-grid{
  display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;
}
#solcall .scall-node{
  flex:1 1 150px;min-width:140px;background:var(--panel);border:1px solid var(--line);
  border-radius:12px;padding:13px 12px;text-align:center;box-shadow:0 1px 2px rgba(20,20,60,.04);
  display:flex;flex-direction:column;gap:5px;justify-content:center;
}
#solcall .scall-node[data-k="voicelive"]{border-color:rgba(91,95,199,.45);box-shadow:0 0 0 2px rgba(91,95,199,.12)}
#solcall .scall-node-ico{font-size:22px;line-height:1;display:flex;align-items:center;justify-content:center;color:var(--brand)}
.scall-node-ico svg.ic{width:22px;height:22px}
.scall-node[data-k="safety"] .scall-node-ico,.scall-node[data-k="acs"] .scall-node-ico{color:var(--brand-2)}
.scall-arch-title svg.ic{width:17px;height:17px;color:var(--brand);vertical-align:-3px;margin-right:6px;display:inline-block}
#solcall .scall-node-cap{font-weight:700;font-size:13px;color:var(--text)}
#solcall .scall-node-meta{font-size:11px;color:var(--muted);line-height:1.35}
#solcall .scall-arrowx{
  display:flex;align-items:center;justify-content:center;position:relative;
  min-width:54px;color:var(--brand);font-weight:700;
}
#solcall .scall-arrowx span{font-size:10.5px;color:var(--muted);white-space:nowrap}
#solcall .scall-arrowx::before{
  content:"\2192";position:absolute;top:-2px;font-size:20px;color:var(--brand);opacity:.7;
}
#solcall .scall-arch-foot{
  margin-top:13px;font-size:11.5px;color:var(--muted);border-top:1px dashed var(--line);padding-top:10px;line-height:1.5;
}
@media(max-width:900px){
  #solcall .scall-arrowx{min-width:100%;height:22px}
  #solcall .scall-arrowx::before{content:"\2193";top:auto;bottom:-2px}
}

/* ===== Generalized end-to-end architecture diagram (applies to every solution tab) ===== */
.scall-arch{
  margin:14px 0 18px;padding:16px;border:1px solid var(--line);border-radius:14px;
  background:linear-gradient(180deg,rgba(91,95,199,.05),rgba(91,95,199,.01));
}
.scall-arch-h{display:flex;flex-direction:column;gap:3px;margin-bottom:14px}
.scall-arch-title{font-weight:800;font-size:14.5px;color:var(--text)}
.scall-arch-sub{font-size:12px;color:var(--muted)}
.scall-arch-grid{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap}
.scall-node{
  flex:1 1 150px;min-width:140px;background:var(--panel);border:1px solid var(--line);
  border-radius:12px;padding:13px 12px;text-align:center;box-shadow:0 1px 2px rgba(20,20,60,.04);
  display:flex;flex-direction:column;gap:5px;justify-content:center;
}
.scall-node[data-k="voicelive"]{border-color:rgba(91,95,199,.45);box-shadow:0 0 0 2px rgba(91,95,199,.12)}
.scall-node-ico{font-size:22px;line-height:1;display:flex;align-items:center;justify-content:center;color:var(--brand)}
.scall-node-ico svg.ic{width:22px;height:22px}
.scall-node-cap{font-weight:700;font-size:13px;color:var(--text)}
.scall-node-meta{font-size:11px;color:var(--muted);line-height:1.35}
.scall-arrowx{
  display:flex;align-items:center;justify-content:center;position:relative;
  min-width:54px;color:var(--brand);font-weight:700;
}
.scall-arrowx span{font-size:10.5px;color:var(--muted);white-space:nowrap}
.scall-arrowx::before{content:"\2192";position:absolute;top:-2px;font-size:20px;color:var(--brand);opacity:.7}
.scall-arch-foot{
  margin-top:13px;font-size:11.5px;color:var(--muted);border-top:1px dashed var(--line);padding-top:10px;line-height:1.5;
}
@media(max-width:900px){
  .scall-arch-grid .scall-arrowx{min-width:100%;height:22px}
  .scall-arch-grid .scall-arrowx::before{content:"\2193";top:auto;bottom:-2px}
}

#solcall .scall-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:1000px){#solcall .scall-grid{grid-template-columns:1fr}}
#solcall .scall-live,#solcall .scall-after{
  border:1px solid var(--line);border-radius:14px;padding:16px;background:var(--panel);
}
#solcall .scall-card-h{
  display:flex;align-items:center;gap:9px;font-weight:800;font-size:14.5px;color:var(--text);margin-bottom:13px;
}
#solcall .scall-tag-live,#solcall .scall-tag-ai{
  font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;
}
#solcall .scall-tag-live{background:rgba(16,185,129,.12);color:var(--ok)}
#solcall .scall-tag-ai{background:rgba(91,95,199,.12);color:var(--brand)}
#solcall .scall-config{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:11px}
@media(max-width:560px){#solcall .scall-config{grid-template-columns:1fr}}
#solcall .scall-field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted)}
#solcall .scall-field select{
  padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--text);font-size:13px;
}
#solcall .scall-persona-note{
  font-size:12px;color:var(--muted);background:rgba(91,95,199,.05);border:1px solid var(--line);
  border-radius:9px;padding:9px 11px;line-height:1.5;margin-bottom:13px;
}
#solcall .scall-dialer{display:flex;align-items:center;gap:14px;margin-bottom:13px}
#solcall .scall-callbtn{
  display:inline-flex;align-items:center;gap:9px;border:none;cursor:pointer;
  background:linear-gradient(135deg,#10B981,#059669);color:#fff;font-weight:700;font-size:14px;
  padding:12px 20px;border-radius:999px;box-shadow:0 4px 14px rgba(16,185,129,.3);transition:.18s;
}
#solcall .scall-callbtn:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(16,185,129,.4)}
#solcall .scall-callbtn:disabled{opacity:.55;cursor:not-allowed}
#solcall .scall-callbtn.on{background:linear-gradient(135deg,#EF4444,#DC2626);box-shadow:0 4px 14px rgba(239,68,68,.3)}
#solcall .scall-callbtn.on .scall-callico{animation:scall-pulse 1.1s infinite}
@keyframes scall-pulse{0%,100%{opacity:1}50%{opacity:.4}}
#solcall .scall-callico{font-size:17px;line-height:1}
#solcall .scall-callmeta{display:flex;flex-direction:column;gap:2px}
#solcall .scall-timer{font-variant-numeric:tabular-nums;font-weight:800;font-size:18px;color:var(--text)}
#solcall .scall-status{font-size:12px;color:var(--muted)}
#solcall .scall-status.live{color:var(--brand)}
#solcall .scall-status.ok{color:var(--ok)}
#solcall .scall-status.error{color:#DC2626}
#solcall .scall-transcript{
  border:1px solid var(--line);border-radius:11px;background:#FBFAFF;padding:12px;height:300px;
  overflow-y:auto;display:flex;flex-direction:column;gap:9px;
}
#solcall .scall-empty{color:var(--muted);font-size:12.5px;text-align:center;margin:auto;line-height:1.6;padding:0 18px}
#solcall .scall-line{display:flex;flex-direction:column;gap:3px;max-width:88%}
#solcall .scall-line.user{align-self:flex-end;align-items:flex-end}
#solcall .scall-line.agent{align-self:flex-start;align-items:flex-start}
#solcall .scall-line-who{font-size:11px;color:var(--muted)}
#solcall .scall-line-txt{
  padding:8px 12px;border-radius:12px;font-size:13px;line-height:1.5;white-space:pre-wrap;
}
#solcall .scall-line.user .scall-line-txt{background:var(--brand);color:#fff;border-bottom-right-radius:3px}
#solcall .scall-line.agent .scall-line-txt{background:#fff;border:1px solid var(--line);color:var(--text);border-bottom-left-radius:3px}

#solcall .scall-after-hint{font-size:12.5px;color:var(--muted);line-height:1.55;margin-bottom:12px}
#solcall #solcall-analyze{width:100%;margin-bottom:14px}
#solcall .scall-stage{
  border:1px solid var(--line);border-radius:12px;padding:13px;margin-bottom:11px;background:#fff;transition:.18s;
}
#solcall .scall-stage[data-active="1"]{border-color:rgba(91,95,199,.4);box-shadow:0 0 0 2px rgba(91,95,199,.1)}
#solcall .scall-stage-h{display:flex;align-items:center;gap:10px;margin-bottom:2px}
#solcall .scall-stage-no{
  width:24px;height:24px;border-radius:7px;background:rgba(91,95,199,.12);color:var(--brand);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;
}
#solcall .scall-stage-title{font-weight:700;font-size:14px;color:var(--text);flex:1}
#solcall .scall-stage-state{font-size:11.5px;color:var(--muted);display:inline-flex;align-items:center;gap:6px}
#solcall .scall-stage-state[data-state="running"]{color:var(--brand)}
#solcall .scall-stage-state[data-state="done"]{color:var(--ok)}
#solcall .scall-stage-state[data-state="error"]{color:#DC2626}
#solcall .scall-spin{
  width:11px;height:11px;border:2px solid rgba(91,95,199,.3);border-top-color:var(--brand);
  border-radius:50%;display:inline-block;animation:scall-spin .7s linear infinite;
}
@keyframes scall-spin{to{transform:rotate(360deg)}}
#solcall .scall-stage-body{font-size:13px;color:var(--text);line-height:1.55;margin-top:10px;display:none}
#solcall .scall-stage-body.show{display:block}
#solcall .scall-sub{font-size:11.5px;font-weight:700;color:var(--muted);margin:10px 0 5px;text-transform:uppercase;letter-spacing:.4px}
#solcall .scall-kv{display:flex;gap:8px;font-size:13px;margin-bottom:4px}
#solcall .scall-kv b{color:var(--muted);font-weight:600;min-width:52px}
#solcall .scall-list{margin:0;padding-left:20px}
#solcall .scall-list li{margin:3px 0}
#solcall .scall-chips{display:flex;flex-wrap:wrap;gap:6px}
#solcall .scall-chip{
  font-size:11.5px;background:rgba(91,95,199,.08);border:1px solid var(--line);
  border-radius:999px;padding:3px 10px;color:var(--text);
}
#solcall .scall-resolved{margin-top:10px;font-size:12.5px;font-weight:700;padding:7px 11px;border-radius:9px}
#solcall .scall-resolved.ok{background:rgba(16,185,129,.1);color:var(--ok)}
#solcall .scall-resolved.warn{background:rgba(245,158,11,.12);color:#B45309}
#solcall .scall-scorerow{display:flex;gap:10px;align-items:center;margin-bottom:6px}
#solcall .scall-emo,#solcall .scall-qa,#solcall .scall-pri{
  font-size:12.5px;font-weight:700;padding:4px 11px;border-radius:999px;
}
#solcall .scall-emo.pass,#solcall .scall-qa.pass,#solcall .scall-pri.pass{background:rgba(16,185,129,.12);color:var(--ok)}
#solcall .scall-emo.warn,#solcall .scall-qa.warn,#solcall .scall-pri.warn{background:rgba(245,158,11,.14);color:#B45309}
#solcall .scall-emo.fail,#solcall .scall-qa.fail,#solcall .scall-pri.fail{background:rgba(239,68,68,.12);color:#DC2626}
#solcall .scall-table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:4px}
#solcall .scall-table th,#solcall .scall-table td{border:1px solid var(--line);padding:6px 8px;text-align:left}
#solcall .scall-table th{background:rgba(91,95,199,.05);color:var(--muted);font-weight:600}
#solcall .scall-ticket-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
#solcall .scall-ticket-title{font-weight:800;font-size:14px;color:var(--text)}
#solcall .scall-raw{background:#FBFAFF;border:1px solid var(--line);border-radius:8px;padding:10px;font-size:12px;white-space:pre-wrap;overflow-x:auto}
#solcall .scall-err{color:#DC2626;font-size:13px;font-weight:600}

/* ===== 调用服务 product badge strip (per-solution) ===== */
.sol-svc{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:2px 0 14px;padding:10px 12px;
  border:1px solid rgba(120,140,180,.18);border-radius:12px;
  background:linear-gradient(180deg,rgba(120,150,210,.07),rgba(120,150,210,.02))}
.sol-svc-lb{font-size:11px;font-weight:700;letter-spacing:.04em;color:#7f8aa3;text-transform:uppercase;margin-right:2px}
.svc-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;
  font-size:12px;line-height:1.3;border:1px solid var(--line,rgba(91,95,199,.16));background:var(--panel-2,#F5F4FB);color:var(--text-2,#52527a)}
.svc-badge .svc-ic{width:14px;height:14px;flex:0 0 14px}
.svc-badge.ok{border-color:rgba(16,185,129,.40);background:rgba(16,185,129,.10);color:#0a7a55}
.svc-badge.ok::after{content:"●";color:#10b981;font-size:9px;margin-left:2px}
.svc-badge.live{border-color:rgba(15,108,189,.40);background:rgba(15,108,189,.10);color:#0f5aa8}
.svc-badge.live::after{content:"LIVE";color:#0F6CBD;font-size:9px;font-weight:700;margin-left:2px}
.svc-badge b{font-weight:700;color:var(--text,#1a1a2e)}

.svc-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 2px}

.svc-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;border:1px solid var(--line,#e2e6ef);background:var(--panel-2,#f5f7fb);font:600 11px/1.4 "Segoe UI Variable","Segoe UI",system-ui;color:var(--text-2,#5a6b82)}

.svc-chip .svc-chip-dot{width:7px;height:7px;border-radius:50%;background:var(--muted,#9aa3b2);flex:0 0 7px}

.svc-chip.live{color:#2563eb;border-color:rgba(37,99,235,.32);background:rgba(37,99,235,.08)}

.svc-chip.live .svc-chip-dot{background:#2563eb;animation:svcPulse 1.4s ease-in-out infinite}

.svc-chip.ok{color:#10b981;border-color:rgba(16,185,129,.3);background:rgba(16,185,129,.10)}

.svc-chip.ok .svc-chip-dot{background:#10b981}

.svc-chip.warn{color:#f59e0b;border-color:rgba(245,158,11,.32);background:rgba(245,158,11,.10)}

.svc-chip.warn .svc-chip-dot{background:#f59e0b}

.svc-chip.error{color:#ef4444;border-color:rgba(239,68,68,.32);background:rgba(239,68,68,.08)}

.svc-chip.error .svc-chip-dot{background:#ef4444}

.svc-chip-tag{font-size:9px;font-weight:800;letter-spacing:.04em;opacity:.85;text-transform:uppercase}

@keyframes svcPulse{0%,100%{box-shadow:0 0 0 0 rgba(37,99,235,.45)}50%{box-shadow:0 0 0 4px rgba(37,99,235,0)}}
@media (max-width:640px){.sol-svc{padding:9px 10px}.svc-badge{font-size:11px;padding:3px 8px}}

#ailang .al-card-body.warn{color:var(--warn);font-size:13px;line-height:1.6}
#ailang .al-card-body.err{color:#d13438;font-size:13px;line-height:1.6}

.fam:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.fam.active:focus-visible{outline:2px solid rgba(255,255,255,.92);outline-offset:-4px}

/* ============================================================
   [rev3] Mobile safety net — kill intrinsic min-width blowout.
   Long <select> option text (e.g. MAI-Image-2.5-Flash…) was
   forcing grid `1fr` tracks to their min-content (~520px),
   overflowing the 390px viewport on #aiimage / #ailang / #solcall.
   Fix: collapse to minmax(0,1fr) + allow grid items & form
   controls to shrink below their content width.
   ============================================================ */
.tab-panel select,
.tab-panel textarea,
.tab-panel input{ max-width:100%; min-width:0; box-sizing:border-box; }

#aiimage .aii-controls, #aiimage .aii-stage,
#ailang .al-col, #ailang .al-card,
#solcall .scall-live, #solcall .scall-after, #solcall .scall-field{ min-width:0; }

@media (max-width:880px){
  #aiimage .aii-grid{ grid-template-columns:minmax(0,1fr); }
  #ailang  .al-grid { grid-template-columns:minmax(0,1fr); }
}
@media (max-width:1000px){
  #solcall .scall-grid{ grid-template-columns:minmax(0,1fr); }
}
@media (max-width:560px){
  #solcall .scall-config{ grid-template-columns:minmax(0,1fr); }
}
