style(studio): the card that is blocking you is the one that is lifted

The rule that raises an unanswered approval out of the flow keyed on
data-k="ask". Authorisation was split off to data-k="write" — a grant
is a write permission — and this was not moved with it, so the common
case, the one that is about to touch your working tree, has been
drawn flat ever since. The criterion is whether a grant is still
unanswered, which .apv:not([data-sealed]) already states; the category
says which kind it is, never whether it blocks.

Lifting also needs a layer, not just an edge. Measured on a blocked
frame, the elements carrying a shadow were the chrome, the search
field, the selected project row, the selected session row and the
composer — five, and the card holding everything up was not among
them. A 9% wash over a transparent fill tints the page it sits on; it
does not leave it. The fill is --float now, with the shadow that goes
with it, and the amber edge stays as the categorical mark.

Verified in both schemes: before an answer the card is the only lifted
element in the transcript, after one there is none.
This commit is contained in:
esengine committed 2026-09-12 18:46:22 -07:00
1 parent 1fb0d7060d
commit 2d1cd8bfdb
1 file changed
+6 -4
+6 -4
View File
@@ -2077,13 +2077,15 @@
.steps .s[data-now] .b { color: var(--net) }
/* ── 批准:不是「你想怎么做」,是「准不准动手」。run 在这里真的阻塞。 ── */
/* 阻塞着的那一张抬出流外。琥珀在这套语言里只说「需要你介入」,而它原来只
落在按钮上,卡片本身跟普通工具卡同权重。答复过就撤掉。 */
.call[data-k="ask"] > .c:has(.apv:not([data-sealed])) {
/* 阻塞着的那一张抬出流外。判据是有没有一张没答复的授权卡,不是它属于哪个
类别 —— 授权是 write,计划确认是 ask,两种都阻塞。答复过就撤掉。
抬起要靠层:边线只说得出这是哪一类,说不出它压着别的东西。 */
.call > .c:has(.apv:not([data-sealed])) {
margin: 3px -14px; padding: 13px 14px; border-left: 2px solid var(--warn);
border-radius: 0 var(--r-lg) var(--r-lg) 0;
background: linear-gradient(102deg,
color-mix(in srgb, var(--accent) 9%, transparent), transparent 72%);
color-mix(in srgb, var(--accent) 12%, transparent), transparent 72%), var(--float);
box-shadow: var(--shadow-float);
}
.apv {
margin-top: 8px; overflow: hidden; background: none;