sotashimozono_obsidian-remo.../plugin/styles.css
sotashimozono 085edf436a
release: 1.1.2 (stable) — validator-clean (#395)
Promotes the validator-cleanup work to a stable release.

- CSS: collapse xterm's text-decoration style (double/wavy/dotted/dashed)
  and simultaneous overline+underline to a plain underline. Obsidian's
  bundled Chromium only partially supports the style and multiple-line
  forms, which the community-plugin validator flagged. Single overline /
  underline / line-through are kept (fully supported).
- Version: 1.1.2-beta.14 -> 1.1.2 (drops -beta; syncs all manifests +
  versions.json, minAppVersion 1.5.0).

Cumulative since 1.1.1: root npm devDeps so the validator resolves plugin
types (#393), obsidian pinned ~1.12.3, and the unsafe-* / CSS warnings
cleared (#394 + this).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 15:28:18 +09:00

418 lines
11 KiB
CSS

/* ─── Status bar ─────────────────────────────────────────────────────── */
.remote-ssh-status {
display: flex;
align-items: center;
gap: 4px;
cursor: pointer;
}
.remote-ssh-status.is-connected { color: var(--color-green); }
.remote-ssh-status.is-syncing { color: var(--color-yellow); }
.remote-ssh-status.is-error { color: var(--color-red); }
/* ─── Pending edits status-bar item ──────────────────────────────────── */
.remote-ssh-pending-edits {
cursor: pointer;
}
.remote-ssh-pending-edits.is-hidden {
display: none;
}
/* ─── Large transfer indicator (#127) ────────────────────────────────── */
.remote-ssh-transfer {
font-variant-numeric: tabular-nums;
}
.remote-ssh-transfer.is-hidden {
display: none;
}
/* ─── Connect modal ──────────────────────────────────────────────────── */
.remote-ssh-connect-secret {
width: 100%;
margin: 8px 0 16px;
}
.remote-ssh-connect-back {
margin-top: 8px;
}
.remote-ssh-connect-button {
width: 100%;
}
/* ─── Conflict modal (legacy 2-choice) ───────────────────────────────── */
.conflict-list { max-height: 400px; overflow-y: auto; }
.conflict-row {
padding: 8px 0;
border-bottom: 1px solid var(--background-modifier-border);
}
.conflict-path { font-weight: 600; font-family: var(--font-monospace); display: block; margin-bottom: 4px; }
.conflict-btn-row { display: flex; gap: 8px; margin-top: 6px; }
.conflict-bulk-row { display: flex; gap: 8px; margin-bottom: 12px; }
.conflict-footer { display: flex; gap: 8px; justify-content: flex-end; margin-top: 16px; }
/* ─── Sync log view ──────────────────────────────────────────────────── */
.sync-log-container {
font-family: var(--font-monospace);
font-size: 12px;
padding: 8px;
height: 100%;
overflow-y: auto;
}
.sync-log-line { padding: 1px 0; }
.sync-log-line.level-error { color: var(--color-red); }
.sync-log-line.level-warn { color: var(--color-yellow); }
.sync-log-line.level-debug { color: var(--text-muted); }
/* ─── Pending edits modal ────────────────────────────────────────────── */
.remote-ssh-pending-edits-list {
max-height: 40vh;
overflow-y: auto;
margin-bottom: 1em;
padding: 0.5em;
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
font-family: var(--font-monospace);
font-size: 0.85em;
}
.remote-ssh-pending-edits-row {
padding: 0.15em 0;
}
/* Shared button row (pending edits + pending plugins modals). */
.remote-ssh-pending-buttons {
display: flex;
justify-content: flex-end;
gap: 0.5em;
margin-top: 1em;
}
/* ─── Pending plugins modal ──────────────────────────────────────────── */
.remote-ssh-pending-plugins {
max-height: 40vh;
overflow-y: auto;
margin-bottom: 1em;
padding: 0.5em;
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
}
.remote-ssh-pending-plugin-row {
display: flex;
align-items: center;
padding: 0.25em 0;
}
.remote-ssh-pending-plugin-checkbox {
margin-right: 0.5em;
}
.remote-ssh-pending-plugin-label {
flex: 1;
}
.remote-ssh-pending-plugin-tag {
font-size: 0.85em;
color: var(--text-muted);
margin-left: 0.5em;
}
/* ─── Three-way merge modal ──────────────────────────────────────────── */
.remote-ssh-merge-panes {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 0.5em;
margin-bottom: 1em;
}
.remote-ssh-merge-edit {
margin-bottom: 1em;
}
.remote-ssh-merge-textarea {
width: 100%;
min-height: 8em;
font-family: var(--font-monospace);
font-size: 0.85em;
}
.remote-ssh-merge-buttons {
display: flex;
justify-content: flex-end;
gap: 0.5em;
}
.remote-ssh-merge-pane {
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
padding: 0.5em;
min-height: 12em;
max-height: 24em;
overflow: auto;
}
.remote-ssh-merge-pane-header {
font-weight: bold;
margin-bottom: 0.5em;
font-size: 0.85em;
}
.remote-ssh-merge-pane-body {
margin: 0;
font-family: var(--font-monospace);
font-size: 0.8em;
white-space: pre-wrap;
word-break: break-word;
}
.remote-ssh-merge-pane-empty {
color: var(--text-muted);
font-style: italic;
}
/* Diff line tints. RGBA chosen for ~18% alpha so the highlight
reads on both light + dark themes without clashing with body text. */
.remote-ssh-merge-line.is-add {
background-color: rgba(34, 197, 94, 0.18);
}
.remote-ssh-merge-line.is-del {
background-color: rgba(239, 68, 68, 0.18);
text-decoration: line-through;
}
/* ─── Daemon log panel (settings tab) ───────────────────────────────── */
.remote-ssh-log-pre {
max-height: 300px;
overflow: auto;
font-family: var(--font-monospace);
font-size: 0.75em;
white-space: pre-wrap;
word-break: break-all;
padding: 0.5em;
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
}
/* ─── Remote path browser modal ─────────────────────────────────────── */
.remote-ssh-breadcrumb {
margin-bottom: 0.5em;
font-family: var(--font-monospace);
font-size: 0.9em;
}
.remote-ssh-breadcrumb-segment {
cursor: pointer;
color: var(--text-accent);
}
.remote-ssh-breadcrumb-segment:hover {
text-decoration: underline;
}
.remote-ssh-dir-list {
max-height: 300px;
overflow-y: auto;
margin-bottom: 1em;
}
.remote-ssh-dir-item {
padding: 4px 8px;
cursor: pointer;
border-radius: 4px;
}
.remote-ssh-dir-item:hover {
background: var(--background-modifier-hover);
}
/* ─── #149 Remote terminal pane ──────────────────────────────────────
*
* Hosts an xterm.js Terminal inside an Obsidian ItemView leaf. The
* `.remote-ssh-terminal-host` wraps the leaf's content area; the
* inner `.remote-ssh-terminal-pane` is the element xterm.js attaches
* to and FitAddon measures. We also inline xterm.js's own default
* stylesheet below (3 KB, MIT-licensed by The xterm.js authors) so
* users don't need a separate CSS asset in their plugin folder.
*/
.remote-ssh-terminal-host {
display: flex;
flex-direction: column;
height: 100%;
padding: 0;
background: var(--background-primary);
}
.remote-ssh-terminal-pane {
flex: 1 1 auto;
min-height: 0;
width: 100%;
/* Solid background ensures xterm's transparent canvas paints over a
* predictable colour in both Obsidian light + dark themes. */
background: #000000;
}
.remote-ssh-terminal-disconnected {
padding: 12px 16px;
color: var(--text-muted);
}
/* xterm.js v5 default stylesheet — inlined to avoid a separate
* @xterm/xterm/css/xterm.css asset. License notice preserved.
*
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
* https://github.com/chjj/term.js
*/
.xterm {
cursor: text;
position: relative;
user-select: none;
-ms-user-select: none;
-webkit-user-select: none;
}
.xterm.focus,
.xterm:focus { outline: none; }
.xterm .xterm-helpers {
position: absolute;
top: 0;
z-index: 5;
}
.xterm .xterm-helper-textarea {
padding: 0;
border: 0;
margin: 0;
position: absolute;
opacity: 0;
left: -9999em;
top: 0;
width: 0;
height: 0;
z-index: -5;
white-space: nowrap;
overflow: hidden;
resize: none;
}
.xterm .composition-view {
background: #000000;
color: #FFFFFF;
display: none;
position: absolute;
white-space: nowrap;
z-index: 1;
}
.xterm .composition-view.active { display: block; }
.xterm .xterm-viewport {
background-color: #000000;
overflow-y: scroll;
cursor: default;
position: absolute;
right: 0;
left: 0;
top: 0;
bottom: 0;
}
.xterm .xterm-screen { position: relative; }
.xterm .xterm-screen canvas { position: absolute; left: 0; top: 0; }
.xterm .xterm-scroll-area { visibility: hidden; }
.xterm-char-measure-element {
display: inline-block;
visibility: hidden;
position: absolute;
top: 0;
left: -9999em;
line-height: normal;
}
.xterm.enable-mouse-events { cursor: default; }
.xterm.xterm-cursor-pointer,
.xterm .xterm-cursor-pointer { cursor: pointer; }
.xterm.column-select.focus { cursor: crosshair; }
.xterm .xterm-accessibility:not(.debug),
.xterm .xterm-message {
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
z-index: 10;
color: transparent;
pointer-events: none;
}
.xterm .xterm-accessibility-tree:not(.debug) *::selection { color: transparent; }
.xterm .xterm-accessibility-tree { user-select: text; white-space: pre; }
.xterm .live-region {
position: absolute;
left: -9999px;
width: 1px;
height: 1px;
overflow: hidden;
}
.xterm-dim.xterm-dim { opacity: 1; }
/* Obsidian's bundled Chromium only partially supports text-decoration
STYLE (double/wavy/dotted/dashed) and MULTIPLE line values
(e.g. `overline underline`), which the community-plugin validator flags.
We collapse xterm's fancy underline styles and the simultaneous
overline+underline to a plain underline — the only fully-supported
text-decoration form. Single overline / underline / line-through are
kept as-is (those are fully supported). */
.xterm-underline-1 { text-decoration: underline; }
.xterm-underline-2 { text-decoration: underline; }
.xterm-underline-3 { text-decoration: underline; }
.xterm-underline-4 { text-decoration: underline; }
.xterm-underline-5 { text-decoration: underline; }
.xterm-overline { text-decoration: overline; }
.xterm-overline.xterm-underline-1 { text-decoration: underline; }
.xterm-overline.xterm-underline-2 { text-decoration: underline; }
.xterm-overline.xterm-underline-3 { text-decoration: underline; }
.xterm-overline.xterm-underline-4 { text-decoration: underline; }
.xterm-overline.xterm-underline-5 { text-decoration: underline; }
.xterm-strikethrough { text-decoration: line-through; }
.xterm-screen .xterm-decoration-container .xterm-decoration {
z-index: 6;
position: absolute;
}
.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer {
z-index: 7;
}
.xterm-decoration-overview-ruler {
z-index: 8;
position: absolute;
top: 0;
right: 0;
pointer-events: none;
}
.xterm-decoration-top {
z-index: 2;
position: relative;
}