/* The assistant orb. Bottom-left so it never fights the admin orb (bottom-right)
   and never covers the artifact at rest: at rest it is one 46px presence. */
.cap-orb{position:fixed;right:18px;bottom:18px;z-index:61}
.cap-orb-btn{width:46px;height:46px;border-radius:50%;border:var(--rule) solid var(--hairline-2);
  background:var(--card);cursor:pointer;box-shadow:var(--lift);display:flex;align-items:center;
  justify-content:center;transition:transform .18s var(--ease),background .18s}
.cap-orb-btn:hover{transform:translateY(-1px)}
.cap-orb .orb-dot{width:15px;height:15px;border-radius:50%;
  background:radial-gradient(circle at 34% 32%,var(--accent),color-mix(in oklab,var(--accent) 45%,var(--ink)));
  box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 16%,transparent)}
.cap-orb.open .cap-orb-btn{background:var(--ink);border-color:var(--ink)}
.cap-orb.open .orb-dot{box-shadow:0 0 0 3px color-mix(in oklab,var(--paper) 22%,transparent)}
.cap-orb-panel{position:absolute;right:0;bottom:58px;width:min(400px,88vw);max-height:74vh;
  display:flex;flex-direction:column;gap:9px;padding:13px;background:var(--card);
  border:var(--rule) solid var(--hairline-2);border-radius:var(--r);box-shadow:var(--lift)}
.cap-orb-panel[hidden]{display:none}
.cap-orb-head{display:flex;align-items:center;gap:8px}
.cap-orb-head b{font-family:var(--serif);font-size:1.25rem;font-weight:500}
.cap-orb-surface{font-family:var(--mono);font-size:max(var(--touch-text-floor,0rem),.6875rem);letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-3);border:var(--rule) solid var(--hairline);border-radius:var(--r-pill);padding:2px 8px}
.cap-orb-head button{margin-left:auto;border:none;background:none;color:var(--ink-3);font-size:1.0625rem;
  cursor:pointer;padding:0 4px}
.cap-orb-body{overflow-y:auto;display:flex;flex-direction:column;gap:9px}
.orb-note{font-size:1rem;color:var(--ink-2);line-height:1.5}
.orb-note.ok{color:var(--green);font-weight:600}
.orb-ctx{display:flex;flex-direction:column;gap:2px;padding:9px 11px;border-radius:var(--r-sm);
  background:var(--paper-2);font-size:.875rem}
.orb-ctx .k{font-size:max(var(--touch-text-floor,0rem),.6875rem);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
.orb-ctx .v{font-family:var(--mono);color:var(--ink-2);word-break:break-all}
.orb-prop .t{font-size:1.125rem;font-weight:600;margin-bottom:3px}
.orb-prop .r{font-size:.9375rem;color:var(--ink-2);line-height:1.5}
.orb-chips{display:flex;flex-wrap:wrap;gap:4px}
.orb-chip{height:32px;padding:0 12px;border:var(--rule) solid var(--hairline-2);border-radius:var(--r-pill);
  background:var(--card);color:var(--ink-2);font-size:.9375rem;font-weight:600;cursor:pointer}
.orb-chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.orb-variants{display:flex;flex-direction:column;gap:4px}
.orb-var{display:flex;align-items:center;gap:9px;padding:8px 10px;border:var(--rule) solid var(--hairline);
  border-radius:var(--r-sm);background:var(--card);cursor:pointer;text-align:left}
.orb-var.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.orb-var .sw{width:26px;height:16px;border-radius:4px;flex:none;transition:opacity .14s var(--ease);
  background:linear-gradient(135deg,var(--accent),color-mix(in oklab,var(--accent) 30%,var(--paper-2)))}
.orb-var .lab{font-size:1rem;font-weight:600}
.orb-standin{font-size:max(var(--touch-text-floor,0rem),.8125rem);color:var(--ink-3);font-style:italic}
.orb-foot{display:flex;gap:6px;padding-top:9px;border-top:var(--rule) solid var(--hairline)}
.orb-foot button{height:36px;padding:0 15px;border-radius:var(--r-pill);border:var(--rule) solid var(--hairline-2);
  background:var(--card);font-size:.9375rem;font-weight:600;cursor:pointer}
.orb-foot button.keep{background:var(--accent);color:#fff;border-color:var(--accent)}
.orb-foot button:disabled{opacity:.5;cursor:default}

/* ── chat-first ──────────────────────────────────────────────────────── */
.cap-orb-panel{height:min(74vh,560px)}
.cap-orb-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:9px;overflow:hidden}
.orb-thread{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:9px;padding-right:2px}
.orb-msg{display:flex;flex-direction:column;gap:6px;max-width:100%}
.orb-msg .bubble{font-size:1rem;line-height:1.5;padding:9px 13px;border-radius:12px;
  background:var(--paper-2);color:var(--ink);white-space:pre-wrap}
.orb-msg.user{align-items:flex-end}
.orb-msg.user .bubble{background:var(--ink);color:var(--paper);border-bottom-right-radius:4px}
.orb-msg.assistant .bubble{border-bottom-left-radius:4px;align-self:flex-start}
.orb-msg.assistant:not(:has(.bubble)){color:var(--ink-3);font-size:max(var(--touch-text-floor,0rem),.84375rem);font-style:italic}
.orb-card{display:flex;flex-direction:column;gap:8px;padding:10px 11px;border:var(--rule) solid var(--hairline);
  border-radius:var(--r-sm);background:var(--card)}
.orb-card .t{font-size:1.125rem;font-weight:600}
.orb-card .r{font-size:.9375rem;color:var(--ink-2);line-height:1.5}
.orb-ideas-field{display:flex;flex-direction:column;gap:6px}
.orb-ideas-field>label{font-size:max(var(--touch-text-floor,0rem),.6875rem);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
.orb-ideas-field textarea{width:100%;min-height:72px;resize:vertical;padding:8px 10px;border:var(--rule) solid var(--hairline-2);border-radius:var(--r-sm);background:var(--paper-2);color:var(--ink);font:inherit;line-height:1.45}
/* Quadrant toggles stay pill buttons even under zen (which flattens .orb-chip). */
.orb-ideas-qs{display:flex;flex-wrap:wrap;gap:6px}
.orb-ideas-q{height:34px;padding:0 12px;border-radius:var(--r-pill);border:var(--rule) solid var(--hairline-2);
  background:var(--paper-2);color:var(--ink-2);font:inherit;font-size:.875rem;font-weight:600;cursor:pointer}
.orb-ideas-q:hover{border-color:var(--ink-3);color:var(--ink)}
.orb-ideas-q.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.orb-ideas-q:disabled{opacity:.5;cursor:default}
.orb-input{display:flex;gap:6px;flex:none;padding-top:9px;border-top:var(--rule) solid var(--hairline)}
.orb-input input{flex:1;min-width:0;height:40px;border:var(--rule) solid var(--hairline-2);
  border-radius:var(--r-pill);background:var(--paper-2);color:var(--ink);padding:0 15px;font-size:1rem}
.orb-input input:focus{outline:none;border-color:var(--ink-3);background:var(--card)}
.orb-input button{width:40px;height:40px;border-radius:50%;border:var(--rule) solid var(--ink);
  background:var(--ink);color:var(--paper);font-size:1rem;cursor:pointer;flex:none;
  display:inline-flex;align-items:center;justify-content:center}
.orb-input button:disabled{opacity:.42;cursor:not-allowed}
.orb-input button.orb-mic-btn,.orb-input button.orb-wake-btn{
  background:var(--paper-2);color:var(--ink);border-color:var(--hairline-2);font-size:.92rem}
.orb-input button.orb-mic-btn.rec{background:var(--accent);color:#fff;border-color:var(--accent);
  box-shadow:0 0 0 4px color-mix(in oklab,var(--accent) 22%,transparent)}
.orb-input button.orb-wake-btn.on{background:#e53e3e;color:#fff;border-color:#e53e3e;
  animation:orbWakePulse 1.8s ease-in-out infinite}
.cap-orb.wake-on .cap-orb-btn{border-color:#e53e3e;box-shadow:0 0 0 3px rgba(229,62,62,.28),var(--lift)}
@keyframes orbWakePulse{
  0%,100%{box-shadow:0 0 0 2px rgba(229,62,62,.24)}
  50%{box-shadow:0 0 0 6px rgba(229,62,62,.12)}
}
.orb-follow-chip{align-self:flex-start;margin-top:4px;padding:6px 12px;border-radius:var(--r-pill);
  border:var(--rule) solid color-mix(in oklab,var(--accent) 45%,var(--hairline-2));
  background:color-mix(in oklab,var(--accent) 10%,var(--card));color:var(--ink);
  font:inherit;font-size:.84375rem;font-weight:600;cursor:pointer;text-align:left}
.orb-follow-chip:hover{background:color-mix(in oklab,var(--accent) 18%,var(--card))}
@media (max-width:700px){
  .cap-orb{right:12px;bottom:calc(12px + var(--inset-bottom))}
}

/* 工作区生成（forge workspace-generation.md） */
.orb-gen{display:flex;gap:6px;flex-wrap:wrap}
.orb-gen button{height:32px;padding:0 12px;border-radius:var(--r-pill);border:var(--rule) solid var(--hairline-2);
  background:var(--card);color:var(--ink);font-size:.875rem;font-weight:600;cursor:pointer}
.orb-gen button.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.orb-gen button:disabled{opacity:.5;cursor:default}
.orb-gen-preview{display:flex;flex-direction:column;gap:6px;padding:8px;border:var(--rule) dashed var(--hairline-2);border-radius:var(--r-sm)}
.orb-gen-wrap{display:flex;flex-direction:column;gap:6px}
.orb-gen-target{height:32px;border-radius:var(--r-sm);border:var(--rule) solid var(--hairline-2);background:var(--card);color:var(--ink);font:inherit;padding:0 8px}

.cap-orb-panel:has(.orb-cockpit){width:min(500px,92vw);height:min(80vh,660px)}
.orb-cockpit{display:flex;flex-direction:column;gap:8px}
.orb-risk-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.orb-risk-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--r-pill);font-family:var(--mono);font-size:.75rem;font-weight:700;letter-spacing:.04em;border:var(--rule) solid var(--hairline)}
.orb-risk-pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.orb-risk-pill.lane-green{color:var(--green);background:color-mix(in oklab,var(--green) 11%,var(--card));border-color:color-mix(in oklab,var(--green) 38%,transparent)}
.orb-risk-pill.lane-yellow{color:var(--gold,#b98a2e);background:color-mix(in oklab,var(--gold,#b98a2e) 12%,var(--card));border-color:color-mix(in oklab,var(--gold,#b98a2e) 40%,transparent)}
.orb-risk-pill.lane-red{color:var(--accent);background:color-mix(in oklab,var(--accent) 12%,var(--card));border-color:color-mix(in oklab,var(--accent) 42%,transparent)}
.orb-stat-badges{display:flex;gap:5px;flex-wrap:wrap;font-family:var(--mono);font-size:.72rem;color:var(--ink-3)}
.orb-stat-badges span{padding:2px 7px;border-radius:var(--r-pill);background:var(--paper-2)}

.orb-layers{display:flex;gap:4px;border-bottom:var(--rule) solid var(--hairline);padding-bottom:6px}
.orb-layers button{height:28px;padding:0 10px;border-radius:var(--r-pill);border:var(--rule) solid transparent;background:transparent;color:var(--ink-3);font-family:var(--mono);font-size:.75rem;font-weight:600;cursor:pointer}
.orb-layers button:hover{color:var(--ink);background:var(--paper-2)}
.orb-layers button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.orb-sec{display:flex;flex-direction:column;gap:5px;padding:8px 9px;border-radius:var(--r-sm);background:var(--paper-2);font-size:.84375rem}
.orb-sec-k{font-family:var(--mono);font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
.orb-decision{padding:6px 8px;border-radius:var(--r-sm);background:var(--card);border-left:3px solid var(--gold,#b98a2e);font-size:.84375rem;color:var(--ink)}
.orb-nodes{display:flex;flex-wrap:wrap;gap:5px}
.orb-gnode{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:var(--r-sm);border:var(--rule) solid var(--hairline-2);background:var(--card);color:var(--ink);font-size:.8125rem;cursor:pointer}
.orb-gnode .role{font-family:var(--mono);font-size:.6875rem;color:var(--accent);text-transform:uppercase}
.orb-gnode.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.orb-gedges{display:flex;flex-wrap:wrap;gap:4px;font-family:var(--mono);font-size:.72rem;color:var(--ink-2)}
.orb-gedges span{padding:2px 6px;border-radius:var(--r-pill);background:var(--card)}
.orb-gates{display:flex;flex-wrap:wrap;gap:5px}
.orb-gate{padding:3px 8px;border-radius:var(--r-sm);background:var(--card);font-family:var(--mono);font-size:.72rem;border:var(--rule) solid var(--hairline)}
.orb-gate.passed{color:var(--green);border-color:color-mix(in oklab,var(--green) 40%,transparent)}
.orb-gate.failed{color:var(--accent);border-color:color-mix(in oklab,var(--accent) 40%,transparent)}
.orb-attempt{display:flex;flex-direction:column;gap:4px;padding:7px 8px;border-radius:var(--r-sm);background:var(--card);border:var(--rule) solid var(--hairline);font-size:.8125rem}
.orb-attempt-h{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.72rem;font-weight:700}
.orb-attempt-h.ok{color:var(--green)}
.orb-attempt-h.err{color:var(--accent)}
.orb-thought{font-size:.8125rem;color:var(--ink-2);line-height:1.45;padding-left:7px;border-left:2px solid var(--info,#5b7285);white-space:pre-wrap}
.orb-feedback{font-family:var(--mono);font-size:.72rem;color:var(--accent);line-height:1.4}
.orb-art-row{font-family:var(--mono);font-size:.75rem;padding:4px 7px;border-radius:var(--r-sm);background:var(--card);color:var(--ink-2)}
.orb-pin-chips{display:flex;flex-wrap:wrap;gap:5px}
.orb-pin{height:26px;padding:0 9px;border-radius:var(--r-pill);border:var(--rule) solid var(--hairline-2);background:var(--card);color:var(--ink-2);font-family:var(--mono);font-size:.72rem;cursor:pointer}
.orb-pin.on{background:var(--info,#5b7285);color:#fff;border-color:var(--info,#5b7285)}
.orb-gold-opt{display:flex;align-items:center;gap:6px;font-size:.8125rem;color:var(--ink-2);cursor:pointer;user-select:none}
.orb-code-unit{display:flex;flex-direction:column;gap:2px;padding:6px 8px;border-radius:var(--r-sm);background:var(--card);border:var(--rule) solid var(--hairline);font-size:.8125rem}
.orb-code-unit code{font-family:var(--mono);font-size:.75rem;color:var(--accent)}
