.psai-processing-overlay {
  position:fixed; inset:0; z-index:90000; display:grid; place-items:center; padding:24px;
  background:rgba(15,23,42,.42); backdrop-filter:blur(5px); font-family:inherit; color:#17243d; box-sizing:border-box;
}
.psai-processing-card {
  position:relative; isolation:isolate; width:min(480px,100%); max-height:calc(100dvh - 48px); overflow:auto;
  box-sizing:border-box; padding:24px 30px 26px; border:1px solid rgba(207,226,251,.95); border-radius:24px;
  background:radial-gradient(ellipse at 100% 0,rgba(215,224,255,.3),transparent 55%),linear-gradient(145deg,#fff 35%,#f5f9ff);
  box-shadow:0 24px 80px rgba(15,23,42,.22),0 0 0 1px rgba(255,255,255,.6) inset; outline:none;
}
/* Decorative layers stay inside this component and never cover its text. */
.psai-processing-visual { position:relative; display:grid; place-items:center; height:102px; margin:-8px -30px 12px; overflow:hidden; pointer-events:none; }
.psai-processing-ambient {
  position:absolute; inset:0; background:radial-gradient(ellipse at 50% 45%,#9edffb40,transparent 65%);
  animation:psai-processing-ambient 5s ease-in-out infinite;
}
.psai-processing-wave { position:absolute; inset:0; width:100%; height:100%; overflow:visible; opacity:.35; stroke-width:1; }
.psai-processing-wave path { vector-effect:non-scaling-stroke; }
.psai-processing-wave-flow { animation:psai-processing-wave 7s ease-in-out infinite alternate; }
.psai-processing-wave-echo { opacity:.7; animation:psai-processing-wave 9s ease-in-out -3s infinite alternate-reverse; }
.psai-processing-brand { position:relative; display:grid; place-items:center; width:100px; height:100px; }
.psai-processing-logo { position:relative; display:block; width:52px; height:52px; object-fit:contain; }
.psai-processing-halo { position:absolute; inset:0; border-radius:50%; background:radial-gradient(circle,#a5e6fa77 0,#c7d9ff33 45%,transparent 70%); animation:psai-processing-halo 3.8s ease-in-out infinite; }
.psai-processing-ring { position:absolute; border:1px solid #60bfe442; border-radius:50%; animation:psai-processing-ring 3.8s ease-in-out infinite; }
.psai-processing-ring-inner { inset:13px; }
.psai-processing-ring-outer { inset:2px; border-color:#8e9be631; animation-delay:-1.9s; }
.psai-processing-orbit { position:absolute; inset:2px; border-radius:50%; animation:psai-processing-orbit 16s linear infinite; }
.psai-processing-orbit::after { content:""; position:absolute; top:0; left:calc(50% - 2px); width:4px; height:4px; border-radius:50%; background:#41bdec; box-shadow:0 0 6px #41bdec88; }
.psai-processing-orbit-secondary { inset:13px; animation-duration:22s; animation-direction:reverse; transform:rotate(130deg); }
.psai-processing-orbit-secondary::after { width:3px; height:3px; background:#9c8ce5; box-shadow:0 0 5px #9c8ce577; }
.psai-processing-card h2 { margin:0; text-align:center; font-size:19px; font-weight:700; letter-spacing:-.02em; }
.psai-processing-card #psai-processing-subtitle { margin:7px 0 25px; text-align:center; color:#65728a; font-size:13px; line-height:1.6; }
.psai-processing-steps { list-style:none; padding:0; margin:0; display:grid; gap:18px; }
.psai-processing-steps li { display:grid; grid-template-columns:28px minmax(0,1fr); gap:13px; opacity:.58; transition:opacity .3s ease; }
.psai-processing-steps li[data-state="active"], .psai-processing-steps li[data-state="done"] { opacity:1; }
.psai-processing-steps li[data-state="partial"], .psai-processing-steps li[data-state="stopped"] { opacity:1; }
.psai-processing-step-copy { min-width:0; }
.psai-processing-indicator {
  position:relative; display:grid; place-items:center; width:28px; height:28px; box-sizing:border-box;
  border:1px solid #dce5f2; border-radius:50%; color:#63758e; background:#edf2f9; font-size:12px; font-weight:700;
  transition:background-color .3s ease,color .3s ease,border-color .3s ease;
}
.psai-processing-indicator::before { content:""; position:absolute; inset:-5px; border:1px solid #64b8f25c; border-radius:50%; opacity:0; pointer-events:none; }
.psai-processing-steps [data-state="active"] .psai-processing-indicator { color:#2960d8; border-color:#bbd5fa; background:#e9f2ff; }
.psai-processing-steps [data-state="active"] .psai-processing-indicator::before { animation:psai-processing-step 2.6s ease-in-out infinite; }
.psai-processing-steps [data-state="done"] .psai-processing-indicator { color:#21845c; border-color:#c7e8d9; background:#e7f6ef; animation:psai-processing-check .28s ease-out; }
.psai-processing-steps h3 { margin:3px 0 4px; font-size:14px; font-weight:650; line-height:1.4; }
.psai-processing-steps p { margin:0; color:#65728a; font-size:12px; line-height:1.6; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.psai-processing-steps .psai-processing-detail { min-height:3.2em; margin-top:3px; color:#758198; font-size:11px; line-height:1.6; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.psai-processing-detail span { display:block; min-height:1.6em; }
.psai-processing-detail[hidden] { display:none; }
/* Reserve each meter's space even while pending: phase changes cannot move rows. */
.psai-processing-meter { position:relative; height:6px; margin-top:10px; }
.psai-processing-steps progress { appearance:none; display:block; width:100%; height:6px; margin:0; border:0; border-radius:10px; overflow:hidden; background:#e8eef8; accent-color:#3979e9; }
.psai-processing-steps progress[hidden] { display:none; }
.psai-processing-steps progress::-webkit-progress-bar { background:#e8eef8; border-radius:10px; }
.psai-processing-steps progress::-webkit-progress-value {
  border-radius:10px; background:repeating-linear-gradient(110deg,#ffffff13 0 1px,transparent 1px 6px),linear-gradient(90deg,#477af0,#39bddb 62%,#9b88e4);
  box-shadow:0 0 5px #60b6ee55; transition:width .18s ease;
}
.psai-processing-steps progress::-moz-progress-bar { border-radius:10px; background:linear-gradient(90deg,#477af0,#39bddb 62%,#9b88e4); box-shadow:0 0 5px #60b6ee55; }
/* Zero/unknown work stays empty; activity is shown by the halo and step pulse. */
.psai-processing-steps progress:not([value])::-webkit-progress-value { background:transparent; box-shadow:none; }
.psai-processing-steps progress:not([value])::-moz-progress-bar { background:transparent; box-shadow:none; }
.psai-processing-reflection { position:absolute; inset:0 auto 0 0; width:var(--psai-progress,0%); border-radius:10px; overflow:hidden; pointer-events:none; opacity:0; transition:width .18s ease,opacity .3s ease; }
.psai-processing-reflection::before { content:""; position:absolute; inset:0 auto 0 0; width:50%; height:100%; background:linear-gradient(90deg,transparent,#ffffff88,transparent); transform:translateX(-100%); }
.psai-processing-steps [data-state="active"] .psai-processing-reflection { opacity:1; }
.psai-processing-steps [data-state="active"] .psai-processing-reflection::before { animation:psai-processing-reflection 2.8s ease-in-out infinite; }
.psai-processing-steps progress[hidden] + .psai-processing-reflection { display:none; }
.psai-processing-note { margin:18px 0 0; color:#875b21; font-size:12px; line-height:1.6; overflow-wrap:anywhere; }
.psai-processing-note:empty { margin:0; }
.psai-processing-card #psai-processing-footer { margin:24px 0 0; padding-top:16px; border-top:1px solid #e0e8f3; color:#758198; font-size:11px; line-height:1.6; text-align:center; }
.psai-emotion-preview { margin-top:14px; padding:10px; border:1px solid #d5e5ef; border-radius:8px; background:#f4f9fd; }
.psai-emotion-preview[hidden] { display:none; }
.psai-emotion-preview strong { font-size:11px; color:#385b7d; }
.psai-emotion-preview p { margin-top:5px; white-space:pre-wrap; max-height:5em; overflow:auto; }
@keyframes psai-processing-ambient { 0%,100% { opacity:.55; } 50% { opacity:1; } }
@keyframes psai-processing-halo { 0%,100% { opacity:.6; transform:scale(.92); } 50% { opacity:1; transform:scale(1.04); } }
@keyframes psai-processing-ring { 0%,100% { opacity:.5; transform:scale(.97); } 50% { opacity:1; transform:scale(1.03); } }
@keyframes psai-processing-orbit { to { transform:rotate(360deg); } }
@keyframes psai-processing-wave { from { transform:translate(-8px,-4px); opacity:.65; } to { transform:translate(8px,5px); opacity:1; } }
@keyframes psai-processing-step { 0%,100% { opacity:.25; transform:scale(.95); } 50% { opacity:.8; transform:scale(1.08); } }
@keyframes psai-processing-check { from { transform:scale(.86); opacity:.5; } to { transform:scale(1); opacity:1; } }
@keyframes psai-processing-reflection { to { transform:translateX(300%); } }
@media(max-width:520px) {
  .psai-processing-overlay { padding:16px; }
  .psai-processing-card { padding:22px; max-height:calc(100dvh - 32px); }
  .psai-processing-visual { margin-left:-22px; margin-right:-22px; }
  .psai-processing-card h2 { font-size:17px; }
}
@media(prefers-reduced-motion:reduce) {
  .psai-processing-overlay *, .psai-processing-overlay *::before, .psai-processing-overlay *::after { animation:none!important; transition:none!important; }
}
