|
@@ -246,11 +246,6 @@
|
|
|
align-items: start;
|
|
align-items: start;
|
|
|
margin: var(--spry-space-3) 0;
|
|
margin: var(--spry-space-3) 0;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-/* Dashboard: the draft subtasks of a parked parent (plan 11 task D). */
|
|
|
|
|
-.waiting-drafts { margin: var(--spry-space-2) 0; padding-left: var(--spry-space-3); }
|
|
|
|
|
-.waiting-drafts li { margin: var(--spry-space-2) 0; }
|
|
|
|
|
-
|
|
|
|
|
/* The status card's corner badge floats right of its heading. */
|
|
/* The status card's corner badge floats right of its heading. */
|
|
|
.status-corner { float: right; font-size: 0.9rem; }
|
|
.status-corner { float: right; font-size: 0.9rem; }
|
|
|
|
|
|
|
@@ -498,134 +493,14 @@
|
|
|
.plan-revision { margin: 0.5rem 0; }
|
|
.plan-revision { margin: 0.5rem 0; }
|
|
|
|
|
|
|
|
/* ==========================================================================
|
|
/* ==========================================================================
|
|
|
- Terminal
|
|
|
|
|
- ========================================================================== */
|
|
|
|
|
-
|
|
|
|
|
-/* The terminal follows the page surface in both modes (a machine
|
|
|
|
|
- surface, not a decorative dark panel): Spry tokens throughout. */
|
|
|
|
|
-.terminal {
|
|
|
|
|
- background: var(--spry-bg-inset);
|
|
|
|
|
- border: var(--spry-border-width) solid var(--spry-border);
|
|
|
|
|
- border-radius: var(--spry-radius);
|
|
|
|
|
- color: var(--spry-fg);
|
|
|
|
|
- font-family: var(--spry-font-mono);
|
|
|
|
|
- font-size: 0.85rem;
|
|
|
|
|
- max-height: 40rem;
|
|
|
|
|
- overflow-y: auto;
|
|
|
|
|
- padding: var(--spry-space-3);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.term-entry {
|
|
|
|
|
- background: var(--spry-bg-alt);
|
|
|
|
|
- border: var(--spry-border-width) solid var(--spry-border);
|
|
|
|
|
- border-radius: var(--spry-radius-sm);
|
|
|
|
|
- margin: var(--spry-space-2) 0;
|
|
|
|
|
- padding: var(--spry-space-2) var(--spry-space-3);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.term-entry .term-head {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: baseline;
|
|
|
|
|
- gap: var(--spry-space-2);
|
|
|
|
|
- flex-wrap: wrap;
|
|
|
|
|
- color: var(--spry-fg-muted);
|
|
|
|
|
- font-size: 0.8rem;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.term-entry .term-command {
|
|
|
|
|
- color: var(--spry-accent);
|
|
|
|
|
- font-weight: 600;
|
|
|
|
|
- white-space: pre-wrap;
|
|
|
|
|
- word-break: break-word;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.term-entry pre {
|
|
|
|
|
- border-radius: var(--spry-radius-sm);
|
|
|
|
|
- margin: var(--spry-space-2) 0 0;
|
|
|
|
|
- padding: var(--spry-space-2) var(--spry-space-3);
|
|
|
|
|
- white-space: pre-wrap;
|
|
|
|
|
- word-break: break-word;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.term-entry .term-output {
|
|
|
|
|
- background: var(--spry-bg-inset);
|
|
|
|
|
- color: var(--spry-fg);
|
|
|
|
|
- cursor: pointer;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.term-entry .term-output.collapsed { max-height: 7.5rem; overflow: hidden; position: relative; }
|
|
|
|
|
-.term-entry .term-output.collapsed::after {
|
|
|
|
|
- content: "… click to expand";
|
|
|
|
|
- background: linear-gradient(transparent, var(--spry-bg-alt) 70%);
|
|
|
|
|
- color: var(--spry-fg-muted);
|
|
|
|
|
- display: block;
|
|
|
|
|
- padding: var(--spry-space-3) var(--spry-space-3) var(--spry-space-2);
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- bottom: 0;
|
|
|
|
|
- left: 0;
|
|
|
|
|
- right: 0;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.term-entry .term-input {
|
|
|
|
|
- background: var(--spry-bg-alt);
|
|
|
|
|
- border-left: 3px solid var(--spry-border);
|
|
|
|
|
- color: var(--spry-fg-muted);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.term-entry .term-input.collapsed { max-height: 7.5rem; overflow: hidden; }
|
|
|
|
|
-
|
|
|
|
|
-.term-entry.type-query { border-color: var(--spry-accent); }
|
|
|
|
|
-.term-entry.type-query .term-command { color: var(--spry-accent); }
|
|
|
|
|
-
|
|
|
|
|
-.term-entry.type-comment .term-output,
|
|
|
|
|
-.term-entry.type-comment .term-command { color: var(--spry-fg-muted); font-style: italic; }
|
|
|
|
|
-.term-entry.type-block { border-color: var(--spry-warning); }
|
|
|
|
|
-.term-entry.type-block .term-output { color: var(--spry-warning); }
|
|
|
|
|
-.term-entry.type-user-comment { border-color: var(--spry-info); }
|
|
|
|
|
-.term-entry.type-user-comment .term-output,
|
|
|
|
|
-.term-entry.type-user-comment .term-command { color: var(--spry-info); }
|
|
|
|
|
-.term-entry.type-progress { border-color: var(--spry-success); }
|
|
|
|
|
-.term-entry.type-progress .term-output,
|
|
|
|
|
-.term-entry.type-progress .term-command { color: var(--spry-success); }
|
|
|
|
|
-.term-entry.type-review { border-color: var(--spry-warning); }
|
|
|
|
|
-.term-entry.type-review .term-output,
|
|
|
|
|
-.term-entry.type-review .term-command { color: var(--spry-warning); }
|
|
|
|
|
-.term-entry.type-plan { border-color: var(--spry-accent); }
|
|
|
|
|
-.term-entry.type-plan .term-output,
|
|
|
|
|
-.term-entry.type-plan .term-command { color: var(--spry-accent); }
|
|
|
|
|
-.term-entry.type-shell-reset { border-color: var(--spry-border); opacity: 0.85; }
|
|
|
|
|
-.term-entry.type-shell-reset .term-head { color: var(--spry-fg-muted); }
|
|
|
|
|
-.term-entry.type-failed { border-color: var(--spry-danger); }
|
|
|
|
|
-.term-entry.type-failed .term-output,
|
|
|
|
|
-.term-entry.type-failed .term-command { color: var(--spry-danger); }
|
|
|
|
|
-
|
|
|
|
|
-/* ==========================================================================
|
|
|
|
|
- Text-selection comment popover
|
|
|
|
|
|
|
+ Text-selection quote button (the comment popover's only survivor)
|
|
|
========================================================================== */
|
|
========================================================================== */
|
|
|
|
|
|
|
|
-.quote-popover {
|
|
|
|
|
- background: var(--spry-popover-bg);
|
|
|
|
|
- border: var(--spry-border-width) solid var(--spry-popover-border);
|
|
|
|
|
- border-radius: var(--spry-radius);
|
|
|
|
|
- box-shadow: var(--spry-popover-shadow);
|
|
|
|
|
- padding: var(--spry-space-3);
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- width: min(26rem, calc(100vw - 3rem));
|
|
|
|
|
- z-index: 40;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.quote-popover blockquote {
|
|
|
|
|
- border-left: 3px solid var(--spry-accent);
|
|
|
|
|
- color: var(--spry-fg-muted);
|
|
|
|
|
- font-family: var(--spry-font-mono);
|
|
|
|
|
- font-size: 0.8rem;
|
|
|
|
|
- margin: 0 0 var(--spry-space-2);
|
|
|
|
|
- max-height: 6rem;
|
|
|
|
|
- overflow-y: auto;
|
|
|
|
|
- padding: 0 var(--spry-space-2);
|
|
|
|
|
- white-space: pre-wrap;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
|
|
+/* T11 sweep: the terminal surface (.terminal + the .term-entry
|
|
|
|
|
+ family, ~120 lines) and the .quote-popover pair are deleted — the
|
|
|
|
|
+ terminal page died with plan 17's event-log migration and app.js's
|
|
|
|
|
+ quote engine creates only this floating .quote-button + the dialog.
|
|
|
|
|
+ The event log's own row grammar lives in the Event log section. */
|
|
|
.quote-button {
|
|
.quote-button {
|
|
|
background: var(--spry-accent);
|
|
background: var(--spry-accent);
|
|
|
border: none;
|
|
border: none;
|
|
@@ -774,16 +649,6 @@ dialog#quote-comment-dialog blockquote {
|
|
|
0%, 100% { opacity: 1; }
|
|
0%, 100% { opacity: 1; }
|
|
|
50% { opacity: 0.3; }
|
|
50% { opacity: 0.3; }
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-.log-task-link {
|
|
|
|
|
- border: var(--spry-border-width) solid var(--spry-border);
|
|
|
|
|
- border-radius: var(--spry-radius-pill);
|
|
|
|
|
- color: var(--spry-accent);
|
|
|
|
|
- padding: 0.2rem 0.7rem;
|
|
|
|
|
- text-decoration: none;
|
|
|
|
|
-}
|
|
|
|
|
-.log-task-link:hover { background: var(--spry-bg-alt); }
|
|
|
|
|
-
|
|
|
|
|
.log-shell {
|
|
.log-shell {
|
|
|
background: var(--spry-surface);
|
|
background: var(--spry-surface);
|
|
|
border: var(--spry-border-width) solid var(--spry-border);
|
|
border: var(--spry-border-width) solid var(--spry-border);
|
|
@@ -1010,13 +875,6 @@ dialog#quote-comment-dialog blockquote {
|
|
|
|
|
|
|
|
.event-result-body { margin-top: 0.3rem; }
|
|
.event-result-body { margin-top: 0.3rem; }
|
|
|
.result-ok { color: var(--spry-success); }
|
|
.result-ok { color: var(--spry-success); }
|
|
|
-.result-failed { color: var(--spry-danger); }
|
|
|
|
|
-.result-stdout,
|
|
|
|
|
-.result-output {
|
|
|
|
|
- color: var(--spry-fg);
|
|
|
|
|
- font-family: var(--spry-font-mono);
|
|
|
|
|
- font-size: 0.85rem;
|
|
|
|
|
-}
|
|
|
|
|
.result-meta {
|
|
.result-meta {
|
|
|
color: var(--spry-fg-muted);
|
|
color: var(--spry-fg-muted);
|
|
|
font-family: var(--spry-font-mono);
|
|
font-family: var(--spry-font-mono);
|
|
@@ -1050,10 +908,6 @@ dialog#quote-comment-dialog blockquote {
|
|
|
white-space: pre-wrap;
|
|
white-space: pre-wrap;
|
|
|
word-break: break-word;
|
|
word-break: break-word;
|
|
|
}
|
|
}
|
|
|
-.diff-del { background: var(--spry-danger-soft); color: var(--spry-danger); }
|
|
|
|
|
-.diff-add { background: var(--spry-success-soft); color: var(--spry-success); }
|
|
|
|
|
-.diff-ctx { color: var(--spry-fg-muted); }
|
|
|
|
|
-
|
|
|
|
|
@media (max-width: 40rem) {
|
|
@media (max-width: 40rem) {
|
|
|
.log-header { align-items: flex-start; flex-direction: column; }
|
|
.log-header { align-items: flex-start; flex-direction: column; }
|
|
|
}
|
|
}
|
|
@@ -1215,28 +1069,10 @@ dialog#quote-comment-dialog blockquote {
|
|
|
.chat-bubble { max-width: 100%; }
|
|
.chat-bubble { max-width: 100%; }
|
|
|
.chat-composer-row { flex-direction: column; align-items: stretch; }
|
|
.chat-composer-row { flex-direction: column; align-items: stretch; }
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-/* ==========================================================================
|
|
|
|
|
- SSH key panel
|
|
|
|
|
- ========================================================================== */
|
|
|
|
|
-
|
|
|
|
|
-/* Agent celebrations (`saddle yeehaw`) — the earned 🤠 cards: a warm
|
|
|
|
|
- warning-tinted festive panel (task page + event log shout rows). */
|
|
|
|
|
-.yeehaw-card {
|
|
|
|
|
- background: var(--spry-warning-soft);
|
|
|
|
|
- border: var(--spry-border-width) solid var(--spry-warning);
|
|
|
|
|
- border-left: 4px solid var(--spry-warning);
|
|
|
|
|
- border-radius: var(--spry-radius);
|
|
|
|
|
- margin: var(--spry-space-3) 0;
|
|
|
|
|
-}
|
|
|
|
|
-.yeehaw-card h3 { color: var(--spry-warning); margin: 0 0 var(--spry-space-2); }
|
|
|
|
|
-.yeehaw-list { list-style: none; margin: 0; padding: 0; }
|
|
|
|
|
-.yeehaw-list li {
|
|
|
|
|
- border-bottom: 1px dashed var(--spry-border);
|
|
|
|
|
- margin: 0;
|
|
|
|
|
- padding: var(--spry-space-2) 0;
|
|
|
|
|
-}
|
|
|
|
|
-.yeehaw-list li:last-child { border-bottom: none; }
|
|
|
|
|
|
|
+/* The yeehaw celebration row (T11: .yeehaw-card/.yeehaw-list deleted —
|
|
|
|
|
+ the earned-yeehaw card surface died with the entry stream; the live
|
|
|
|
|
+ celebration is the log's .yeehaw-message span, pinned by
|
|
|
|
|
+ test_task_log_js.py). */
|
|
|
.yeehaw-message { font-weight: 600; margin-right: var(--spry-space-2); }
|
|
.yeehaw-message { font-weight: 600; margin-right: var(--spry-space-2); }
|
|
|
|
|
|
|
|
/* The saddle's SSH public key display: a quiet monospace panel. */
|
|
/* The saddle's SSH public key display: a quiet monospace panel. */
|
|
@@ -1329,7 +1165,7 @@ dialog#quote-comment-dialog blockquote {
|
|
|
/* Ambient zones (activity, notes, discoveries): reference material,
|
|
/* Ambient zones (activity, notes, discoveries): reference material,
|
|
|
deliberately flat — the rules below keep Spry's expander chrome
|
|
deliberately flat — the rules below keep Spry's expander chrome
|
|
|
from boxing them into card-weight sections that would compete with
|
|
from boxing them into card-weight sections that would compete with
|
|
|
- the attention column above (the mocks/ sampler review: collapsed
|
|
|
|
|
|
|
+ the attention column above (the goal-41 direction review: collapsed
|
|
|
zones read as ruled rows, not cards). */
|
|
zones read as ruled rows, not cards). */
|
|
|
.dash-ambient > summary {
|
|
.dash-ambient > summary {
|
|
|
color: var(--spry-fg-muted);
|
|
color: var(--spry-fg-muted);
|
|
@@ -1353,7 +1189,7 @@ dialog#quote-comment-dialog blockquote {
|
|
|
(the t10views bundle asserts its absence), so the cap rules were
|
|
(the t10views bundle asserts its absence), so the cap rules were
|
|
|
dead selectors. */
|
|
dead selectors. */
|
|
|
|
|
|
|
|
-/* The advisor hero's in-card heading copy (the samplers' composer
|
|
|
|
|
|
|
+/*/* The advisor hero's in-card heading copy (the direction review's composer
|
|
|
shape): the description sits inside the composer card, above the
|
|
shape): the description sits inside the composer card, above the
|
|
|
textarea; the chats link sits with the action, left. Same
|
|
textarea; the chats link sits with the action, left. Same
|
|
|
specificity as the goal-27 rule above — this section is later in
|
|
specificity as the goal-27 rule above — this section is later in
|
|
@@ -1598,7 +1434,6 @@ td .truncate.repo-url {
|
|
|
the card's inset surface to read as one folding block. */
|
|
the card's inset surface to read as one folding block. */
|
|
|
.saddle-admin { padding-left: var(--spry-space-2); }
|
|
.saddle-admin { padding-left: var(--spry-space-2); }
|
|
|
|
|
|
|
|
-
|
|
|
|
|
/* ==========================================================================
|
|
/* ==========================================================================
|
|
|
Goal 41 T9 — library pages (project_detail / rules / discoveries / chats)
|
|
Goal 41 T9 — library pages (project_detail / rules / discoveries / chats)
|
|
|
No component additions: every surface adopts Spry primitives
|
|
No component additions: every surface adopts Spry primitives
|