xref: /plugin/annotations/style.css (revision ad1073d40e87e01426f7a3b1bf49fa2e56d38cf1)
143d2073cStracker-user/**
243d2073cStracker-user * Annotations plugin — stylesheet.
343d2073cStracker-user *
443d2073cStracker-user * Colour tokens use DokuWiki's __xxx__ replacement syntax so the theme
543d2073cStracker-user * controls the palette.  Hard-coded colours are limited to the annotation-
643d2073cStracker-user * specific highlights (amber / green) which are intentionally opinionated.
743d2073cStracker-user *
843d2073cStracker-user * FF78 ESR safe: no :has(), :not() with selectors, aspect-ratio, container
943d2073cStracker-user * queries, or CSS nesting.
1086c7806dStracker-user *
1186c7806dStracker-user * The two highlight hues are driven by CSS custom properties that action.php
1286c7806dStracker-user * injects from the color_open / color_resolved config (as "r,g,b" triplets);
1386c7806dStracker-user * every fill/border/marker/pill tint below is that hue at a different opacity.
1486c7806dStracker-user * The :root fallbacks here keep the built-in amber/green palette when the
1586c7806dStracker-user * injected <style> is absent (e.g. annotations off, or a stripped template).
1686c7806dStracker-user *
1786c7806dStracker-user * NOTE: every rgba() that contains var() is LESS-escaped as ~"rgba(var(…), a)".
1886c7806dStracker-user * DokuWiki compiles plugin CSS through lesserphp, which otherwise evaluates
1986c7806dStracker-user * rgba() at compile time, reads var() as 0, and bakes the colour to #000000.
2086c7806dStracker-user * The escape makes lesserphp emit the declaration verbatim so the browser
2186c7806dStracker-user * resolves the custom property at render time. Keep new var()-based colours
2286c7806dStracker-user * escaped the same way.
2343d2073cStracker-user */
2443d2073cStracker-user
2586c7806dStracker-user:root {
2649d7ec0aStracker-user    --ann-open-rgb: 245, 158, 11;     /* amber — open / unresolved (config default) */
2749d7ec0aStracker-user    --ann-resolved-rgb: 74, 222, 128; /* green — resolved (config default) */
2886c7806dStracker-user}
2986c7806dStracker-user
3043d2073cStracker-user/* =========================================================================
3143d2073cStracker-user   Highlight spans
3243d2073cStracker-user   ========================================================================= */
3343d2073cStracker-user
3443d2073cStracker-user.ann-highlight-open {
3586c7806dStracker-user    background-color: ~"rgba(var(--ann-open-rgb), 0.35)";   /* amber-300 @ 35% */
3686c7806dStracker-user    border-bottom: 2px solid ~"rgba(var(--ann-open-rgb), 0.7)";
3743d2073cStracker-user    border-radius: 2px;
3843d2073cStracker-user    cursor: pointer;
3943d2073cStracker-user    transition: background-color 0.15s ease;
4043d2073cStracker-user}
4143d2073cStracker-user
4243d2073cStracker-user.ann-highlight-open:hover {
4386c7806dStracker-user    background-color: ~"rgba(var(--ann-open-rgb), 0.55)";
4443d2073cStracker-user}
4543d2073cStracker-user
4643d2073cStracker-user.ann-highlight-resolved {
4786c7806dStracker-user    background-color: ~"rgba(var(--ann-resolved-rgb), 0.30)";  /* green-300 @ 30% */
4886c7806dStracker-user    border-bottom: 2px solid ~"rgba(var(--ann-resolved-rgb), 0.6)";
4943d2073cStracker-user    border-radius: 2px;
5043d2073cStracker-user    cursor: pointer;
5143d2073cStracker-user    transition: background-color 0.15s ease;
5243d2073cStracker-user}
5343d2073cStracker-user
5443d2073cStracker-user.ann-highlight-resolved:hover {
5586c7806dStracker-user    background-color: ~"rgba(var(--ann-resolved-rgb), 0.50)";
5643d2073cStracker-user}
5743d2073cStracker-user
5843d2073cStracker-user/* =========================================================================
5943d2073cStracker-user   Counter bar
6043d2073cStracker-user   ========================================================================= */
6143d2073cStracker-user
6243d2073cStracker-user#ann-counter-bar {
6343d2073cStracker-user    display: flex;
6443d2073cStracker-user    align-items: center;
6543d2073cStracker-user    flex-wrap: wrap;
6643d2073cStracker-user    gap: 0.5em;
6743d2073cStracker-user    padding: 0.4em 0.75em;
6843d2073cStracker-user    margin-bottom: 0.75em;
6943d2073cStracker-user    background: __background_alt__;
7043d2073cStracker-user    border: 1px solid __border__;
7143d2073cStracker-user    border-radius: 4px;
7243d2073cStracker-user    color: __text__;
7343d2073cStracker-user}
7443d2073cStracker-user
7543d2073cStracker-user.ann-orphan-link {
7643d2073cStracker-user    color: __link__;
7743d2073cStracker-user    text-decoration: underline;
7843d2073cStracker-user    cursor: pointer;
7943d2073cStracker-user}
8043d2073cStracker-user
8143d2073cStracker-user/* =========================================================================
8243d2073cStracker-user   Gutter markers
8343d2073cStracker-user   ========================================================================= */
8443d2073cStracker-user
85563f3b4cStracker-user/* Markers are appended to document.body as position:absolute elements so
86563f3b4cStracker-user   that no template overflow:hidden can clip them. Top/left are set inline
87563f3b4cStracker-user   via JS using getBoundingClientRect() + scroll offsets. All markers share
88563f3b4cStracker-user   the same X position (left edge of the .page column) so they form a tidy
89563f3b4cStracker-user   vertical column in the document margin. */
9043d2073cStracker-user.ann-gutter-marker {
9143d2073cStracker-user    position: absolute;
9243d2073cStracker-user    padding: 0;
9343d2073cStracker-user    border: none;
94563f3b4cStracker-user    background: none;
9586c7806dStracker-user    color: ~"rgba(var(--ann-open-rgb), 0.8)"; /* amber — open */
9643d2073cStracker-user    cursor: pointer;
97563f3b4cStracker-user    display: flex;
98563f3b4cStracker-user    align-items: center;
99563f3b4cStracker-user    justify-content: center;
100563f3b4cStracker-user    z-index: 1000;
101563f3b4cStracker-user    transition: color 0.15s ease, transform 0.12s ease;
102563f3b4cStracker-user}
103563f3b4cStracker-user
104563f3b4cStracker-user/* Suppress any UA button background on all interactive states. */
105563f3b4cStracker-user.ann-gutter-marker:hover,
106563f3b4cStracker-user.ann-gutter-marker:focus,
107563f3b4cStracker-user.ann-gutter-marker:active {
108563f3b4cStracker-user    background: none;
109563f3b4cStracker-user    outline: none;
110563f3b4cStracker-user    box-shadow: none;
11143d2073cStracker-user}
11243d2073cStracker-user
11343d2073cStracker-user.ann-gutter-marker:hover {
11486c7806dStracker-user    color: ~"rgba(var(--ann-open-rgb), 1)";
115563f3b4cStracker-user}
116563f3b4cStracker-user
117563f3b4cStracker-user.ann-gutter-marker[data-status="resolved"] {
11886c7806dStracker-user    color: ~"rgba(var(--ann-resolved-rgb), 0.8)"; /* green — resolved */
119563f3b4cStracker-user}
120563f3b4cStracker-user
121563f3b4cStracker-user.ann-gutter-marker[data-status="resolved"]:hover {
12286c7806dStracker-user    color: ~"rgba(var(--ann-resolved-rgb), 1)";
12343d2073cStracker-user}
12443d2073cStracker-user
12543d2073cStracker-user/* =========================================================================
12643d2073cStracker-user   Annotation panel
12743d2073cStracker-user   ========================================================================= */
12843d2073cStracker-user
12943d2073cStracker-user.ann-panel {
13043d2073cStracker-user    margin: 0.75em 0 1em;
13143d2073cStracker-user    border: 1px solid __border__;
13286c7806dStracker-user    border-left: 3px solid ~"rgba(var(--ann-open-rgb), 0.7)";
13343d2073cStracker-user    background: __background_alt__;
134563f3b4cStracker-user    box-shadow: 0 2px 8px rgba(0,0,0,0.10);
135563f3b4cStracker-user    contain: layout;
13643d2073cStracker-user}
13743d2073cStracker-user
13843d2073cStracker-user/* =========================================================================
13943d2073cStracker-user   Thread entries (annotation + replies)
14043d2073cStracker-user   ========================================================================= */
14143d2073cStracker-user
14243d2073cStracker-user.ann-thread-entry {
14343d2073cStracker-user    padding: 0.65em 0.85em;
14443d2073cStracker-user    border-bottom: 1px solid __border__;
14543d2073cStracker-user}
14643d2073cStracker-user
14743d2073cStracker-user.ann-thread-entry:last-of-type {
14843d2073cStracker-user    border-bottom: none;
14943d2073cStracker-user}
15043d2073cStracker-user
151563f3b4cStracker-user/* Root annotation entry: lighter background so it stands out from the panel. */
152563f3b4cStracker-user.ann-thread-entry.ann-annotation {
153563f3b4cStracker-user    background: __background__;
154563f3b4cStracker-user}
155563f3b4cStracker-user
156563f3b4cStracker-user/* Reply entries: inset card with the same lighter background. */
15743d2073cStracker-user.ann-reply {
15843d2073cStracker-user    margin-left: 1.5em;
15943d2073cStracker-user    background: __background__;
16043d2073cStracker-user    border-left: 2px solid __border__;
16143d2073cStracker-user}
16243d2073cStracker-user
16343d2073cStracker-user/* =========================================================================
164563f3b4cStracker-user   Meta row (avatar, author, time, status, close button)
16543d2073cStracker-user   ========================================================================= */
16643d2073cStracker-user
16743d2073cStracker-user.ann-meta {
16843d2073cStracker-user    display: flex;
16943d2073cStracker-user    align-items: center;
17043d2073cStracker-user    gap: 0.4em;
17143d2073cStracker-user    margin-bottom: 0.35em;
17243d2073cStracker-user    flex-wrap: wrap;
17343d2073cStracker-user}
17443d2073cStracker-user
17543d2073cStracker-user.ann-avatar {
17643d2073cStracker-user    display: inline-flex;
17743d2073cStracker-user    align-items: center;
17843d2073cStracker-user    justify-content: center;
17943d2073cStracker-user    width: 1.8em;
18043d2073cStracker-user    height: 1.8em;
18143d2073cStracker-user    border-radius: 50%;
18243d2073cStracker-user    background: __link__;
18343d2073cStracker-user    color: #fff;
18443d2073cStracker-user    font-size: 0.75em;
18543d2073cStracker-user    font-weight: 700;
18643d2073cStracker-user    flex-shrink: 0;
18743d2073cStracker-user}
18843d2073cStracker-user
18943d2073cStracker-user.ann-author {
19043d2073cStracker-user    font-weight: 600;
19143d2073cStracker-user    color: __text__;
19243d2073cStracker-user}
19343d2073cStracker-user
19443d2073cStracker-user.ann-time {
19543d2073cStracker-user    color: __text_alt__;
19643d2073cStracker-user    font-size: 0.85em;
19743d2073cStracker-user}
19843d2073cStracker-user
19943d2073cStracker-user.ann-status {
20043d2073cStracker-user    display: inline-block;
20143d2073cStracker-user    padding: 0.1em 0.45em;
20243d2073cStracker-user    border-radius: 10em;
20343d2073cStracker-user    font-size: 0.78em;
20443d2073cStracker-user    font-weight: 600;
20543d2073cStracker-user    letter-spacing: 0.02em;
20643d2073cStracker-user}
20743d2073cStracker-user
20843d2073cStracker-user.ann-status-open {
20986c7806dStracker-user    background: ~"rgba(var(--ann-open-rgb), 0.25)";
21043d2073cStracker-user    color: #92400e;
21186c7806dStracker-user    border: 1px solid ~"rgba(var(--ann-open-rgb), 0.5)";
21243d2073cStracker-user}
21343d2073cStracker-user
21443d2073cStracker-user.ann-status-resolved {
21586c7806dStracker-user    background: ~"rgba(var(--ann-resolved-rgb), 0.25)";
21643d2073cStracker-user    color: #166534;
21786c7806dStracker-user    border: 1px solid ~"rgba(var(--ann-resolved-rgb), 0.4)";
21843d2073cStracker-user}
21943d2073cStracker-user
22043d2073cStracker-user/* =========================================================================
22143d2073cStracker-user   Body text and quoted selection
22243d2073cStracker-user   ========================================================================= */
22343d2073cStracker-user
22443d2073cStracker-user.ann-body {
22543d2073cStracker-user    white-space: pre-wrap;
22643d2073cStracker-user    word-break: break-word;
22743d2073cStracker-user    color: __text__;
22843d2073cStracker-user    margin-bottom: 0.4em;
22943d2073cStracker-user}
23043d2073cStracker-user
23143d2073cStracker-user.ann-quote {
232563f3b4cStracker-user    margin-bottom: 0.65em;
23343d2073cStracker-user    padding: 0.25em 0.6em;
23486c7806dStracker-user    border-left: 3px solid ~"rgba(var(--ann-open-rgb), 0.6)";
235563f3b4cStracker-user    color: __text__;
23643d2073cStracker-user    font-size: 0.9em;
23786c7806dStracker-user    background: ~"rgba(var(--ann-open-rgb), 0.08)";
23843d2073cStracker-user    border-radius: 0 2px 2px 0;
23943d2073cStracker-user}
24043d2073cStracker-user
24143d2073cStracker-user/* =========================================================================
24243d2073cStracker-user   Action buttons row
24343d2073cStracker-user   ========================================================================= */
24443d2073cStracker-user
24543d2073cStracker-user.ann-actions {
24643d2073cStracker-user    display: flex;
247563f3b4cStracker-user    gap: 0.5em;
24843d2073cStracker-user    flex-wrap: wrap;
249563f3b4cStracker-user    margin-top: 0.65em;
25043d2073cStracker-user}
25143d2073cStracker-user
25243d2073cStracker-user.ann-btn {
25343d2073cStracker-user    display: inline-block;
25443d2073cStracker-user    padding: 0.2em 0.55em;
255563f3b4cStracker-user    font-size: 0.85em;
25643d2073cStracker-user    border: 1px solid __border__;
25743d2073cStracker-user    border-radius: 3px;
258563f3b4cStracker-user    background: __background__ !important;
25943d2073cStracker-user    color: __text__;
26043d2073cStracker-user    cursor: pointer;
26143d2073cStracker-user    line-height: 1.4;
26243d2073cStracker-user    transition: background-color 0.12s ease;
26343d2073cStracker-user}
26443d2073cStracker-user
26543d2073cStracker-user.ann-btn:hover {
266563f3b4cStracker-user    background: __background_alt__ !important;
26743d2073cStracker-user}
26843d2073cStracker-user
26943d2073cStracker-user.ann-btn-primary {
270563f3b4cStracker-user    background: __link__ !important;
27143d2073cStracker-user    border-color: __link__;
27243d2073cStracker-user    color: #fff;
27343d2073cStracker-user}
27443d2073cStracker-user
27543d2073cStracker-user.ann-btn-primary:hover {
276563f3b4cStracker-user    background: __link__ !important;
277563f3b4cStracker-user    color: #fff;
27843d2073cStracker-user    opacity: 0.88;
27943d2073cStracker-user}
28043d2073cStracker-user
281563f3b4cStracker-user/* Disabled state: prevent UA-stylesheet background overrides and ensure
282563f3b4cStracker-user   primary buttons keep their link colour. */
283563f3b4cStracker-user.ann-btn:disabled,
284563f3b4cStracker-user.ann-btn[disabled] {
285563f3b4cStracker-user    background: __background__;
286563f3b4cStracker-user    opacity: 0.55;
287563f3b4cStracker-user    cursor: not-allowed;
288563f3b4cStracker-user}
289563f3b4cStracker-user
290563f3b4cStracker-user.ann-btn:disabled:hover,
291563f3b4cStracker-user.ann-btn[disabled]:hover {
292563f3b4cStracker-user    background: __background__;
293563f3b4cStracker-user}
294563f3b4cStracker-user
295563f3b4cStracker-user.ann-btn-primary:disabled,
296563f3b4cStracker-user.ann-btn-primary[disabled] {
297563f3b4cStracker-user    background: __link__;
298563f3b4cStracker-user    color: #fff;
299563f3b4cStracker-user}
300563f3b4cStracker-user
301563f3b4cStracker-user.ann-btn-primary:disabled:hover,
302563f3b4cStracker-user.ann-btn-primary[disabled]:hover {
303563f3b4cStracker-user    background: __link__;
304563f3b4cStracker-user    opacity: 0.55;
305563f3b4cStracker-user}
306563f3b4cStracker-user
307563f3b4cStracker-user/* Spinner shown while an AJAX request is in flight (set by setBusy()).
308563f3b4cStracker-user   The translate(-50%,-50%) is baked into every keyframe so it stays perfectly
309563f3b4cStracker-user   centred regardless of sub-pixel rounding and never jigles. */
310563f3b4cStracker-user@keyframes ann-spin {
311563f3b4cStracker-user    from { transform: translate(-50%, -50%) rotate(0deg); }
312563f3b4cStracker-user    to   { transform: translate(-50%, -50%) rotate(360deg); }
313563f3b4cStracker-user}
314563f3b4cStracker-user
315563f3b4cStracker-user.ann-btn-busy {
316563f3b4cStracker-user    position: relative;
317563f3b4cStracker-user    color: transparent;
318563f3b4cStracker-user}
319563f3b4cStracker-user
320563f3b4cStracker-user.ann-btn-busy::after {
321563f3b4cStracker-user    content: '';
322563f3b4cStracker-user    position: absolute;
323563f3b4cStracker-user    top: 50%;
324563f3b4cStracker-user    left: 50%;
325563f3b4cStracker-user    width: 0.75em;
326563f3b4cStracker-user    height: 0.75em;
327563f3b4cStracker-user    border: 2px solid rgba(0, 0, 0, 0.25);
328563f3b4cStracker-user    border-top-color: rgba(0, 0, 0, 0.75);
329563f3b4cStracker-user    border-radius: 50%;
330563f3b4cStracker-user    animation: ann-spin 0.6s linear infinite;
331563f3b4cStracker-user}
332563f3b4cStracker-user
333563f3b4cStracker-user.ann-btn-primary.ann-btn-busy::after {
334563f3b4cStracker-user    border-color: rgba(255, 255, 255, 0.35);
335563f3b4cStracker-user    border-top-color: rgba(255, 255, 255, 0.9);
336563f3b4cStracker-user}
337563f3b4cStracker-user
33843d2073cStracker-user.ann-btn-danger {
33943d2073cStracker-user    border-color: #dc2626;
34043d2073cStracker-user    color: #dc2626;
34143d2073cStracker-user}
34243d2073cStracker-user
34343d2073cStracker-user.ann-btn-danger:hover {
34443d2073cStracker-user    background: rgba(220, 38, 38, 0.08);
34543d2073cStracker-user}
34643d2073cStracker-user
34743d2073cStracker-user.ann-btn-admin {
34843d2073cStracker-user    border-color: __border__;
349563f3b4cStracker-user    color: __text__;
35043d2073cStracker-user}
35143d2073cStracker-user
352563f3b4cStracker-user/* Close button — lives inside .ann-meta, pushed right via margin-left:auto (set in JS). */
35343d2073cStracker-user.ann-close {
354563f3b4cStracker-user    font-size: 1.35em;
35543d2073cStracker-user    line-height: 1;
356563f3b4cStracker-user    padding: 0.05em 0.3em;
35743d2073cStracker-user    border: none;
358563f3b4cStracker-user    background: none !important;
35943d2073cStracker-user    color: __text_alt__;
36043d2073cStracker-user    cursor: pointer;
361563f3b4cStracker-user    flex-shrink: 0;
36243d2073cStracker-user}
36343d2073cStracker-user
36443d2073cStracker-user.ann-close:hover {
36543d2073cStracker-user    color: __text__;
366563f3b4cStracker-user    background: none !important;
36743d2073cStracker-user}
36843d2073cStracker-user
36943d2073cStracker-user/* =========================================================================
37043d2073cStracker-user   Reply form + new-annotation form
37143d2073cStracker-user   ========================================================================= */
37243d2073cStracker-user
37343d2073cStracker-user.ann-reply-form,
37443d2073cStracker-user.ann-new-form {
37543d2073cStracker-user    padding: 0.65em 0.85em;
37643d2073cStracker-user}
37743d2073cStracker-user
37843d2073cStracker-user.ann-new-form {
37943d2073cStracker-user    margin: 0.75em 0 1em;
38043d2073cStracker-user    border: 1px solid __border__;
38186c7806dStracker-user    border-left: 3px solid ~"rgba(var(--ann-open-rgb), 0.7)";
38243d2073cStracker-user    background: __background_alt__;
383563f3b4cStracker-user    contain: layout;
38443d2073cStracker-user}
38543d2073cStracker-user
38643d2073cStracker-user.ann-body-input {
38743d2073cStracker-user    display: block;
38843d2073cStracker-user    width: 100%;
38943d2073cStracker-user    box-sizing: border-box;
39043d2073cStracker-user    padding: 0.4em 0.6em;
39143d2073cStracker-user    font: inherit;
39243d2073cStracker-user    border: 1px solid __border__;
39343d2073cStracker-user    background: __background__;
39443d2073cStracker-user    color: __text__;
39543d2073cStracker-user    resize: vertical;
396563f3b4cStracker-user    margin-bottom: 0.65em;
39743d2073cStracker-user}
39843d2073cStracker-user
39943d2073cStracker-user.ann-body-input:focus {
400563f3b4cStracker-user    outline: 1px solid __link__;
40143d2073cStracker-user}
40243d2073cStracker-user
40343d2073cStracker-user.ann-form-row {
40443d2073cStracker-user    display: flex;
40543d2073cStracker-user    gap: 0.4em;
40643d2073cStracker-user}
40743d2073cStracker-user
408563f3b4cStracker-user.ann-form-row + .ann-quote {
409563f3b4cStracker-user    margin-top: 0.65em;
410563f3b4cStracker-user}
411563f3b4cStracker-user
41243d2073cStracker-user/* =========================================================================
41343d2073cStracker-user   Selection tooltip
41443d2073cStracker-user   ========================================================================= */
41543d2073cStracker-user
41643d2073cStracker-user.ann-tooltip {
41743d2073cStracker-user    position: absolute;
41843d2073cStracker-user    z-index: 9000;
41943d2073cStracker-user    border-radius: 4px;
42043d2073cStracker-user    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
42143d2073cStracker-user}
42243d2073cStracker-user
42386c7806dStracker-user/* Static amber glow drawing the eye to the freshly-revealed "Annotate" button.
42486c7806dStracker-user   The rgba() is LESS-escaped (~"…") so DokuWiki's CSS compiler passes it through
42586c7806dStracker-user   verbatim instead of evaluating var() to black; the browser resolves the
42686c7806dStracker-user   custom property at render time. FF78 ESR safe. */
42786c7806dStracker-user.ann-tooltip .ann-btn {
42886c7806dStracker-user    box-shadow: 0 0 8px 2px ~"rgba(var(--ann-open-rgb), 0.45)", 0 1px 4px rgba(0,0,0,0.25);
42986c7806dStracker-user}
43086c7806dStracker-user
43143d2073cStracker-user/* =========================================================================
43243d2073cStracker-user   Orphan drawer
43343d2073cStracker-user   ========================================================================= */
43443d2073cStracker-user
43543d2073cStracker-user.ann-orphan-drawer {
436563f3b4cStracker-user    display: flow-root; /* BFC: shrinks to avoid overlapping the floated TOC */
437563f3b4cStracker-user    margin-bottom: 0.65em;
43843d2073cStracker-user    padding: 0.75em 1em;
43943d2073cStracker-user    border: 1px dashed __border__;
44043d2073cStracker-user    border-radius: 4px;
44143d2073cStracker-user    background: __background_alt__;
44243d2073cStracker-user}
44343d2073cStracker-user
44443d2073cStracker-user.ann-orphan-drawer h4 {
44543d2073cStracker-user    margin: 0 0 0.3em;
44643d2073cStracker-user    font-size: 0.95em;
447563f3b4cStracker-user    color: __text__;
44843d2073cStracker-user}
44943d2073cStracker-user
45043d2073cStracker-user.ann-orphan-note {
45143d2073cStracker-user    font-size: 0.85em;
452563f3b4cStracker-user    color: __text__;
45343d2073cStracker-user    margin-bottom: 0.75em;
45443d2073cStracker-user}
45543d2073cStracker-user
456*ad1073d4Stracker-user/* Each orphaned annotation renders as a full thread (root + replies). Wrap it
457*ad1073d4Stracker-user   like an inline panel so multiple orphaned threads stay visually separated. */
458*ad1073d4Stracker-user.ann-orphan-thread {
459*ad1073d4Stracker-user    margin-bottom: 0.75em;
460*ad1073d4Stracker-user    border: 1px solid __border__;
461*ad1073d4Stracker-user    border-left: 3px solid ~"rgba(var(--ann-open-rgb), 0.7)";
462*ad1073d4Stracker-user    background: __background_alt__;
463*ad1073d4Stracker-user    contain: layout;
464*ad1073d4Stracker-user}
465*ad1073d4Stracker-user
466*ad1073d4Stracker-user.ann-orphan-thread:last-child {
467*ad1073d4Stracker-user    margin-bottom: 0;
468*ad1073d4Stracker-user}
469*ad1073d4Stracker-user
470*ad1073d4Stracker-user.ann-orphan-thread[data-status="resolved"] {
471*ad1073d4Stracker-user    border-left-color: ~"rgba(var(--ann-resolved-rgb), 0.6)";
472*ad1073d4Stracker-user}
473*ad1073d4Stracker-user
47443d2073cStracker-user/* =========================================================================
47543d2073cStracker-user   Resolved annotation panels: shift to green accent
47643d2073cStracker-user   ========================================================================= */
47743d2073cStracker-user
47843d2073cStracker-user.ann-panel[data-status="resolved"] {
47986c7806dStracker-user    border-left-color: ~"rgba(var(--ann-resolved-rgb), 0.6)";
48043d2073cStracker-user}
4819fd890c3Stracker-user
4829fd890c3Stracker-user/* =========================================================================
4839fd890c3Stracker-user   Admin overview (annotated-pages table) — mirrors the lastseen panel
4849fd890c3Stracker-user   ========================================================================= */
4859fd890c3Stracker-user
4869fd890c3Stracker-user.plugin_annotations_admin .annotations_admin_bar {
4879fd890c3Stracker-user    margin: 0.6em 0;
4889fd890c3Stracker-user}
4899fd890c3Stracker-user
4909fd890c3Stracker-user.plugin_annotations_admin .annotations_admin_id {
4919fd890c3Stracker-user    color: __text_alt__;
4929fd890c3Stracker-user    font-size: 90%;
4939fd890c3Stracker-user}
4949fd890c3Stracker-user
4959fd890c3Stracker-user.plugin_annotations_admin td.annotations_admin_num,
4969fd890c3Stracker-user.plugin_annotations_admin td.annotations_admin_actions,
4979fd890c3Stracker-user.plugin_annotations_admin .annotations_admin_filteractions,
4989fd890c3Stracker-user.plugin_annotations_admin th {
4999fd890c3Stracker-user    text-align: center;
5009fd890c3Stracker-user    white-space: nowrap;
5019fd890c3Stracker-user}
5029fd890c3Stracker-user
5039fd890c3Stracker-user.plugin_annotations_admin th,
5049fd890c3Stracker-user.plugin_annotations_admin td {
5059fd890c3Stracker-user    vertical-align: middle;
5069fd890c3Stracker-user}
5079fd890c3Stracker-user
5089fd890c3Stracker-user/* per-column filter row */
5099fd890c3Stracker-user.plugin_annotations_admin .annotations_admin_filterrow td {
5109fd890c3Stracker-user    padding-top: 0.3em;
5119fd890c3Stracker-user    padding-bottom: 0.3em;
5129fd890c3Stracker-user}
5139fd890c3Stracker-user
5149fd890c3Stracker-user.plugin_annotations_admin .annotations_admin_filterrow input.edit {
5159fd890c3Stracker-user    width: 100%;
5169fd890c3Stracker-user    box-sizing: border-box;
5179fd890c3Stracker-user}
5189fd890c3Stracker-user
5199fd890c3Stracker-user.annotations_admin_clear {
5209fd890c3Stracker-user    margin-left: 0.5em;
5219fd890c3Stracker-user    font-size: 90%;
5229fd890c3Stracker-user}
5239fd890c3Stracker-user
5249fd890c3Stracker-user.annotations_admin_none {
5259fd890c3Stracker-user    text-align: center;
5269fd890c3Stracker-user    color: __text_alt__;
5279fd890c3Stracker-user    font-style: italic;
5289fd890c3Stracker-user}
5299fd890c3Stracker-user
5309fd890c3Stracker-user.annotations_admin_count {
5319fd890c3Stracker-user    color: __text_alt__;
5329fd890c3Stracker-user    font-size: 90%;
5339fd890c3Stracker-user}
5349fd890c3Stracker-user
5359fd890c3Stracker-user/* the POST forms targeted via the form= attribute carry only hidden inputs */
5369fd890c3Stracker-user.plugin_annotations_admin .annotations_admin_post {
5379fd890c3Stracker-user    display: none;
5389fd890c3Stracker-user}
5399fd890c3Stracker-user
5409fd890c3Stracker-user/* numbered pager */
5419fd890c3Stracker-user.annotations_admin_pager {
5429fd890c3Stracker-user    margin: 0.6em 0;
5439fd890c3Stracker-user}
5449fd890c3Stracker-user
5459fd890c3Stracker-user.annotations_admin_pager .pager_btn,
5469fd890c3Stracker-user.annotations_admin_pager .pager_cur,
5479fd890c3Stracker-user.annotations_admin_pager .pager_gap,
5489fd890c3Stracker-user.annotations_admin_pager .pager_disabled {
5499fd890c3Stracker-user    display: inline-block;
5509fd890c3Stracker-user    min-width: 1.6em;
5519fd890c3Stracker-user    padding: 0.15em 0.45em;
5529fd890c3Stracker-user    margin: 0 0.1em;
5539fd890c3Stracker-user    text-align: center;
5549fd890c3Stracker-user}
5559fd890c3Stracker-user
5569fd890c3Stracker-user.annotations_admin_pager .pager_btn,
5579fd890c3Stracker-user.annotations_admin_pager .pager_cur,
5589fd890c3Stracker-user.annotations_admin_pager .pager_disabled {
5599fd890c3Stracker-user    border: 1px solid __border__;
5609fd890c3Stracker-user}
5619fd890c3Stracker-user
5629fd890c3Stracker-user.annotations_admin_pager .pager_btn {
5639fd890c3Stracker-user    text-decoration: none;
5649fd890c3Stracker-user}
5659fd890c3Stracker-user
5669fd890c3Stracker-user.annotations_admin_pager .pager_cur {
5679fd890c3Stracker-user    background-color: __background_alt__;
5689fd890c3Stracker-user    font-weight: bold;
5699fd890c3Stracker-user}
5709fd890c3Stracker-user
5719fd890c3Stracker-user.annotations_admin_pager .pager_disabled {
5729fd890c3Stracker-user    color: __text_alt__;
5739fd890c3Stracker-user}
5749fd890c3Stracker-user
5759fd890c3Stracker-user.annotations_admin_pager .pager_gap {
5769fd890c3Stracker-user    border: 0;
5779fd890c3Stracker-user}
578