1386 lines
29 KiB
CSS
1386 lines
29 KiB
CSS
.hermes-relay-plugin {
|
|
--hr-bg: var(--color-card, color-mix(in srgb, var(--midground-base, #f4f4f5) 4%, var(--background-base, #0b0b0c)));
|
|
--hr-surface: color-mix(in srgb, var(--color-card, var(--hr-bg)) 90%, transparent);
|
|
--hr-surface-muted: color-mix(in srgb, var(--color-muted, var(--hr-bg)) 76%, transparent);
|
|
--hr-border: var(--color-border, color-mix(in srgb, var(--midground-base, #f4f4f5) 16%, transparent));
|
|
--hr-text: var(--color-foreground, var(--midground, #f4f4f5));
|
|
--hr-card-text: var(--color-card-foreground, var(--hr-text));
|
|
--hr-muted: var(--color-muted-foreground, color-mix(in srgb, var(--hr-text) 68%, transparent));
|
|
--hr-danger: var(--color-destructive, #ef4444);
|
|
--hr-success: var(--color-success, #22c55e);
|
|
--hr-warning: var(--color-warning, #f59e0b);
|
|
--hr-ring: var(--color-ring, var(--hr-text));
|
|
--hr-popover: var(--color-popover, var(--hr-bg));
|
|
--hr-popover-text: var(--color-popover-foreground, var(--hr-card-text));
|
|
--hr-overlay: color-mix(in srgb, var(--background-base, #020617) 78%, transparent);
|
|
color: var(--hr-text);
|
|
font-family: var(
|
|
--theme-font-sans,
|
|
ui-sans-serif,
|
|
system-ui,
|
|
-apple-system,
|
|
BlinkMacSystemFont,
|
|
"Segoe UI",
|
|
sans-serif
|
|
);
|
|
font-size: 1rem;
|
|
line-height: var(--theme-line-height, 1.45);
|
|
max-width: 100%;
|
|
}
|
|
|
|
.hermes-relay-plugin,
|
|
.hermes-relay-plugin * {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.hermes-relay-plugin h1,
|
|
.hermes-relay-plugin h2,
|
|
.hermes-relay-plugin h3,
|
|
.hermes-relay-plugin p,
|
|
.hermes-relay-plugin pre {
|
|
margin: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin h1,
|
|
.hermes-relay-plugin [class*="CardTitle"],
|
|
.hermes-relay-plugin .font-semibold {
|
|
font-weight: 650;
|
|
}
|
|
|
|
.hermes-relay-plugin h1 {
|
|
font-size: 1.5rem;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.hermes-relay-plugin code,
|
|
.hermes-relay-plugin pre,
|
|
.hermes-relay-plugin .font-mono {
|
|
font-family:
|
|
var(--theme-font-mono, "SFMono-Regular", Consolas, "Liberation Mono", monospace);
|
|
}
|
|
|
|
.hermes-relay-plugin pre {
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.hermes-relay-plugin select,
|
|
.hermes-relay-plugin textarea,
|
|
.hermes-relay-plugin input:not([class]) {
|
|
font: inherit;
|
|
color: inherit;
|
|
}
|
|
|
|
/*
|
|
* Buttons inherit the font but NOT the colour. The host's Nous DS ``Button``
|
|
* sets its own contrast text colour via utility classes (``text-background-base``
|
|
* for the solid fill, ``text-midground`` for outlined, ``text-current`` /
|
|
* ``text-destructive`` for ghost). A blanket ``color: inherit`` here (specificity
|
|
* 0,1,1) would outrank those utilities (0,1,0) and repaint every label in the
|
|
* container foreground — invisible against the light ``bg-midground`` fill
|
|
* (the blank-white-box symptom, issue #71 generalised). Plain ``<button>``
|
|
* elements in this plugin (tab strip, the advanced toggle) already set their
|
|
* colour explicitly via ``text-foreground`` / ``text-muted-foreground``, so they
|
|
* are unaffected by dropping the inherit.
|
|
*/
|
|
.hermes-relay-plugin button {
|
|
display: inline-flex;
|
|
min-height: 2rem;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 0.35rem;
|
|
border-radius: var(--radius-md, 6px);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.hermes-relay-plugin button:disabled {
|
|
cursor: not-allowed;
|
|
opacity: 0.55;
|
|
}
|
|
|
|
.hermes-relay-plugin input,
|
|
.hermes-relay-plugin select {
|
|
max-width: 100%;
|
|
border: 1px solid var(--hr-border);
|
|
border-radius: var(--radius-md, 6px);
|
|
background: var(--hr-bg);
|
|
color: var(--hr-card-text);
|
|
}
|
|
|
|
.hermes-relay-plugin input[type="checkbox"] {
|
|
width: 1rem;
|
|
height: 1rem;
|
|
accent-color: var(--hr-ring);
|
|
}
|
|
|
|
.hermes-relay-plugin canvas {
|
|
max-width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-selectable {
|
|
user-select: all;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-mobile-setup-qr {
|
|
transition:
|
|
opacity 180ms ease,
|
|
transform 180ms ease;
|
|
animation: hr-mobile-setup-ready 180ms ease-out both;
|
|
}
|
|
|
|
@keyframes hr-mobile-setup-ready {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.985);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.hermes-relay-plugin .hr-mobile-setup-qr {
|
|
transition: none;
|
|
animation: none;
|
|
}
|
|
}
|
|
|
|
.hermes-relay-plugin .space-y-1 > * + * {
|
|
margin-top: 0.25rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .space-y-2 > * + * {
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .space-y-3 > * + * {
|
|
margin-top: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .space-y-4 > * + * {
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .flex {
|
|
display: flex;
|
|
}
|
|
|
|
.hermes-relay-plugin .inline-block {
|
|
display: inline-block;
|
|
}
|
|
|
|
.hermes-relay-plugin .block {
|
|
display: block;
|
|
}
|
|
|
|
.hermes-relay-plugin .grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(210px, 100%), 1fr));
|
|
}
|
|
|
|
.hermes-relay-plugin .grid-cols-2 {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
@media (min-width: 640px) {
|
|
.hermes-relay-plugin .sm\:grid-cols-2 {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1024px) {
|
|
.hermes-relay-plugin .lg\:grid-cols-3 {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
|
|
.hermes-relay-plugin .lg\:grid-cols-4 {
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
}
|
|
}
|
|
|
|
@media (max-width: 560px) {
|
|
.hermes-relay-plugin .grid-cols-2 {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
.hermes-relay-plugin .flex-row {
|
|
flex-direction: row;
|
|
}
|
|
|
|
.hermes-relay-plugin .flex-col {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.hermes-relay-plugin .flex-wrap {
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.hermes-relay-plugin .items-start {
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.hermes-relay-plugin .items-center {
|
|
align-items: center;
|
|
}
|
|
|
|
.hermes-relay-plugin .justify-center {
|
|
justify-content: center;
|
|
}
|
|
|
|
.hermes-relay-plugin .justify-between {
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.hermes-relay-plugin .justify-end {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.hermes-relay-plugin .gap-1 {
|
|
gap: 0.25rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .gap-2 {
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .gap-3 {
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .p-2 {
|
|
padding: 0.5rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .p-3 {
|
|
padding: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .p-4 {
|
|
padding: 1rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .px-2 {
|
|
padding-left: 0.5rem;
|
|
padding-right: 0.5rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .px-3 {
|
|
padding-left: 0.75rem;
|
|
padding-right: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .px-4 {
|
|
padding-left: 1rem;
|
|
padding-right: 1rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .py-2 {
|
|
padding-top: 0.5rem;
|
|
padding-bottom: 0.5rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .pt-0 {
|
|
padding-top: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .pt-1 {
|
|
padding-top: 0.25rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .pt-3 {
|
|
padding-top: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .pb-2 {
|
|
padding-bottom: 0.5rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .mt-1 {
|
|
margin-top: 0.25rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .mt-2 {
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .mt-3 {
|
|
margin-top: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .mt-4 {
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .mb-1 {
|
|
margin-bottom: 0.25rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .mb-3 {
|
|
margin-bottom: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .ml-auto {
|
|
margin-left: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin .h-2\.5 {
|
|
height: 0.625rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .w-2\.5 {
|
|
width: 0.625rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .h-4,
|
|
.hermes-relay-plugin .w-4 {
|
|
width: 1rem;
|
|
height: 1rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .h-9 {
|
|
min-height: 2.25rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .h-10 {
|
|
min-height: 2.5rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .w-full {
|
|
width: 100%;
|
|
}
|
|
|
|
.hermes-relay-plugin .w-fit {
|
|
width: fit-content;
|
|
}
|
|
|
|
.hermes-relay-plugin .max-w-xs {
|
|
max-width: 20rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .max-w-xl {
|
|
max-width: 36rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .max-h-\[90vh\] {
|
|
max-height: 90vh;
|
|
}
|
|
|
|
.hermes-relay-plugin .overflow-auto {
|
|
overflow: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin .overflow-y-auto {
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin .truncate {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.hermes-relay-plugin .whitespace-pre-wrap {
|
|
white-space: pre-wrap;
|
|
}
|
|
|
|
.hermes-relay-plugin .text-right {
|
|
text-align: right;
|
|
}
|
|
|
|
.hermes-relay-plugin .text-left {
|
|
text-align: left;
|
|
}
|
|
|
|
.hermes-relay-plugin .align-middle {
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.hermes-relay-plugin .text-xs {
|
|
font-size: 0.75rem;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.hermes-relay-plugin .text-sm {
|
|
font-size: 0.875rem;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.hermes-relay-plugin .text-2xl {
|
|
font-size: 1.5rem;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.hermes-relay-plugin .font-medium {
|
|
font-weight: 500;
|
|
}
|
|
|
|
.hermes-relay-plugin .font-normal {
|
|
font-weight: 400;
|
|
}
|
|
|
|
.hermes-relay-plugin .text-muted-foreground {
|
|
color: var(--hr-muted);
|
|
}
|
|
|
|
.hermes-relay-plugin .text-foreground {
|
|
color: var(--hr-text);
|
|
}
|
|
|
|
.hermes-relay-plugin .text-destructive {
|
|
color: var(--hr-danger);
|
|
}
|
|
|
|
.hermes-relay-plugin .uppercase {
|
|
text-transform: uppercase !important;
|
|
}
|
|
|
|
.hermes-relay-plugin .tracking-wider {
|
|
letter-spacing: 0.05em !important;
|
|
}
|
|
|
|
.hermes-relay-plugin .tracking-widest {
|
|
letter-spacing: 0.12em !important;
|
|
}
|
|
|
|
.hermes-relay-plugin .capitalize {
|
|
text-transform: capitalize !important;
|
|
}
|
|
|
|
.hermes-relay-plugin .rounded {
|
|
border-radius: var(--radius-sm, 4px);
|
|
}
|
|
|
|
.hermes-relay-plugin .rounded-md {
|
|
border-radius: var(--radius-md, 6px);
|
|
}
|
|
|
|
.hermes-relay-plugin .border,
|
|
.hermes-relay-plugin .border-b,
|
|
.hermes-relay-plugin .border-t,
|
|
.hermes-relay-plugin .border-b-2 {
|
|
border-color: var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .border {
|
|
border-style: solid;
|
|
border-width: 1px;
|
|
}
|
|
|
|
.hermes-relay-plugin .border-b {
|
|
border-bottom-style: solid;
|
|
border-bottom-width: 1px;
|
|
}
|
|
|
|
.hermes-relay-plugin .border-t {
|
|
border-top-style: solid;
|
|
border-top-width: 1px;
|
|
}
|
|
|
|
.hermes-relay-plugin .border-b-2 {
|
|
border-bottom-style: solid;
|
|
border-bottom-width: 2px;
|
|
}
|
|
|
|
.hermes-relay-plugin .border-transparent {
|
|
border-color: transparent;
|
|
}
|
|
|
|
.hermes-relay-plugin .border-foreground {
|
|
border-color: var(--hr-text);
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-background {
|
|
background: var(--hr-bg);
|
|
color: var(--hr-card-text);
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-white {
|
|
background: #fff;
|
|
color: #111827;
|
|
}
|
|
|
|
/*
|
|
* Defensive contrast for any shadcn-class solid surface that a host's Button
|
|
* happens to emit (``bg-primary`` / ``bg-secondary``). The primary button path
|
|
* now goes through the Nous DS ``Button`` via the ui-shims adapter, which
|
|
* carries its own ``bg-midground`` / ``text-background-base`` utilities; these
|
|
* rules only matter for hosts whose components differ. Kept as a belt.
|
|
*/
|
|
.hermes-relay-plugin .bg-primary {
|
|
color: var(--color-primary-foreground, var(--primary-foreground, #0b0b0c));
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-secondary {
|
|
color: var(--color-secondary-foreground, var(--secondary-foreground, var(--hr-text)));
|
|
}
|
|
|
|
/*
|
|
* Fallback button / badge skins — used ONLY when the host does not expose a
|
|
* Nous DS ``Button`` / ``Badge`` (see the no-component branch in
|
|
* lib/ui-shims.jsx). They paint from the plugin's resolved theme tokens so a
|
|
* component-less host still gets readable, theme-matched controls instead of a
|
|
* raw white default.
|
|
*/
|
|
.hermes-relay-plugin .hr-btn {
|
|
cursor: pointer;
|
|
border: 1px solid transparent;
|
|
}
|
|
.hermes-relay-plugin .hr-btn-solid {
|
|
background: var(--hr-text);
|
|
color: var(--hr-bg);
|
|
border-color: var(--hr-text);
|
|
}
|
|
.hermes-relay-plugin .hr-btn-solid:hover:not(:disabled) {
|
|
opacity: 0.9;
|
|
}
|
|
.hermes-relay-plugin .hr-btn-outline {
|
|
background: transparent;
|
|
color: var(--hr-text);
|
|
border-color: var(--hr-border);
|
|
}
|
|
.hermes-relay-plugin .hr-btn-outline:hover:not(:disabled) {
|
|
background: var(--hr-surface-muted);
|
|
}
|
|
.hermes-relay-plugin .hr-btn-ghost {
|
|
background: transparent;
|
|
color: var(--hr-text);
|
|
border-color: transparent;
|
|
}
|
|
.hermes-relay-plugin .hr-btn-ghost:hover:not(:disabled) {
|
|
background: var(--hr-surface-muted);
|
|
}
|
|
.hermes-relay-plugin .hr-btn-destructive {
|
|
background: var(--hr-danger);
|
|
color: #fff;
|
|
border-color: var(--hr-danger);
|
|
}
|
|
.hermes-relay-plugin .hr-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.25rem;
|
|
padding: 0.1rem 0.4rem;
|
|
border-radius: var(--radius-sm, 4px);
|
|
border: 1px solid transparent;
|
|
font-size: 0.75rem;
|
|
line-height: 1.2;
|
|
}
|
|
.hermes-relay-plugin .hr-badge-secondary {
|
|
background: var(--hr-surface-muted);
|
|
color: var(--hr-text);
|
|
border-color: var(--hr-border);
|
|
}
|
|
.hermes-relay-plugin .hr-badge-outline {
|
|
background: transparent;
|
|
color: var(--hr-muted);
|
|
border-color: var(--hr-border);
|
|
}
|
|
.hermes-relay-plugin .hr-badge-destructive {
|
|
background: color-mix(in srgb, var(--hr-danger) 16%, transparent);
|
|
color: var(--hr-danger);
|
|
border-color: color-mix(in srgb, var(--hr-danger) 40%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-muted\/20,
|
|
.hermes-relay-plugin .bg-muted\/30,
|
|
.hermes-relay-plugin .bg-muted\/50 {
|
|
background: var(--hr-surface-muted);
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-background\/80 {
|
|
background: color-mix(in srgb, var(--hr-bg) 82%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-destructive\/10 {
|
|
background: color-mix(in srgb, var(--hr-danger) 12%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .border-destructive\/50 {
|
|
border-color: color-mix(in srgb, var(--hr-danger) 55%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-amber-500\/10,
|
|
.hermes-relay-plugin .bg-amber-500\/15 {
|
|
background: color-mix(in srgb, var(--hr-warning) 16%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .border-amber-500\/50,
|
|
.hermes-relay-plugin .border-amber-500\/60 {
|
|
border-color: color-mix(in srgb, var(--hr-warning) 58%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-emerald-500 {
|
|
background: var(--hr-success);
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-amber-500 {
|
|
background: var(--hr-warning);
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-destructive {
|
|
background: var(--hr-danger);
|
|
color: var(--color-destructive-foreground, var(--destructive-foreground, #fff));
|
|
}
|
|
|
|
.hermes-relay-plugin .bg-muted-foreground\/40 {
|
|
background: color-mix(in srgb, var(--hr-muted) 40%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .transition-colors {
|
|
transition:
|
|
color 0.15s ease,
|
|
border-color 0.15s ease,
|
|
background 0.15s ease;
|
|
}
|
|
|
|
.hermes-relay-plugin .hover\:text-foreground:hover {
|
|
color: var(--hr-text);
|
|
}
|
|
|
|
.hermes-relay-plugin .focus\:outline-none:focus {
|
|
outline: none;
|
|
}
|
|
|
|
.hermes-relay-plugin .focus-visible\:ring-1:focus-visible {
|
|
outline: 1px solid var(--hr-ring);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.hermes-relay-plugin .cursor-pointer {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.hermes-relay-plugin [role="tablist"] {
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin [role="tablist"] button {
|
|
background: transparent;
|
|
border-top: 0;
|
|
border-left: 0;
|
|
border-right: 0;
|
|
border-radius: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .w-full.overflow-auto {
|
|
max-width: 100%;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin table {
|
|
width: 100%;
|
|
min-width: 720px;
|
|
border-collapse: collapse;
|
|
table-layout: fixed;
|
|
}
|
|
|
|
.hermes-relay-plugin thead {
|
|
background: var(--hr-surface-muted);
|
|
}
|
|
|
|
.hermes-relay-plugin th,
|
|
.hermes-relay-plugin td {
|
|
padding: 0.55rem;
|
|
text-align: left;
|
|
vertical-align: top;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.hermes-relay-plugin th {
|
|
color: var(--hr-muted);
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.hermes-relay-plugin tr {
|
|
border-bottom: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin th:last-child,
|
|
.hermes-relay-plugin td:last-child {
|
|
width: 11rem;
|
|
}
|
|
|
|
.hermes-relay-plugin td:last-child .flex {
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-switch {
|
|
position: relative;
|
|
display: inline-flex;
|
|
width: 2.25rem;
|
|
min-width: 2.25rem;
|
|
height: 1.25rem;
|
|
min-height: 1.25rem;
|
|
flex: 0 0 auto;
|
|
align-items: center;
|
|
padding: 0;
|
|
border: 1px solid var(--hr-border);
|
|
border-radius: 0;
|
|
background: var(--hr-bg);
|
|
transition: border-color 150ms ease, background 150ms ease;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-switch.checked {
|
|
border-color: color-mix(in srgb, var(--hr-success) 48%, transparent);
|
|
background: color-mix(in srgb, var(--hr-success) 18%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-switch-thumb {
|
|
display: block;
|
|
width: 0.85rem;
|
|
height: 0.85rem;
|
|
transform: translateX(0.2rem);
|
|
background: color-mix(in srgb, var(--hr-muted) 70%, transparent);
|
|
transition: transform 150ms ease, background 150ms ease;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-switch.checked .hr-switch-thumb {
|
|
transform: translateX(1rem);
|
|
background: var(--hr-success);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-switch:focus-visible {
|
|
outline: 1px solid var(--hr-ring);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
/* Hermes-Relay information architecture ---------------------------------- */
|
|
|
|
.hermes-relay-plugin .hr-plugin-toolbar {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
justify-content: space-between;
|
|
gap: 1rem;
|
|
border-bottom: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-plugin-tablist {
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
overflow-x: auto;
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-live-control {
|
|
display: flex;
|
|
flex: 0 0 auto;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
min-height: 2.25rem;
|
|
padding-bottom: 0.35rem;
|
|
color: var(--hr-muted);
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-tab-content {
|
|
min-width: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-service-card {
|
|
overflow: hidden;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-service-header {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: 1rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-service-details {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-service-details > div {
|
|
display: grid;
|
|
min-width: 9rem;
|
|
gap: 0.2rem;
|
|
padding-right: 1.5rem;
|
|
margin-right: 1.5rem;
|
|
border-right: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-service-details span {
|
|
color: var(--hr-muted);
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-service-details strong {
|
|
font-family: var(--theme-font-mono, ui-monospace, monospace);
|
|
font-size: 0.875rem;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-inline-error {
|
|
padding: 0 1rem 1rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-overview-grid,
|
|
.hermes-relay-plugin .hr-connection-choice-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 1rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-overview-device {
|
|
display: grid;
|
|
gap: 0.5rem;
|
|
padding-top: 0.75rem;
|
|
border-top: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-device-list {
|
|
display: grid;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-device-card {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 1rem;
|
|
padding: 0.9rem;
|
|
border: 1px solid var(--hr-border);
|
|
background: color-mix(in srgb, var(--hr-surface-muted) 55%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-device-card-compact {
|
|
padding: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-device-main {
|
|
display: grid;
|
|
min-width: 0;
|
|
gap: 0.45rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-device-title-row,
|
|
.hermes-relay-plugin .hr-device-meta,
|
|
.hermes-relay-plugin .hr-grant-list,
|
|
.hermes-relay-plugin .hr-device-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: 0.45rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-device-meta > span + span::before {
|
|
content: "·";
|
|
margin-right: 0.45rem;
|
|
color: var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-device-actions {
|
|
flex: 0 0 auto;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-status-dot {
|
|
width: 0.55rem;
|
|
height: 0.55rem;
|
|
flex: 0 0 auto;
|
|
border-radius: 999px;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-status-dot-success {
|
|
background: var(--hr-success);
|
|
box-shadow: 0 0 0 3px color-mix(in srgb, var(--hr-success) 14%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-empty-state {
|
|
display: grid;
|
|
place-items: center;
|
|
gap: 0.35rem;
|
|
min-height: 9rem;
|
|
padding: 1.5rem;
|
|
text-align: center;
|
|
border: 1px dashed var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-activity-list {
|
|
display: grid;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-activity-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 1rem;
|
|
padding: 0.75rem 0;
|
|
border-bottom: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-activity-row:first-child {
|
|
padding-top: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-activity-row:last-child {
|
|
padding-bottom: 0;
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-activity-method {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-activity-tablist {
|
|
width: fit-content;
|
|
}
|
|
|
|
/* Settings follows the upstream Config page's rail + content pattern. */
|
|
|
|
.hermes-relay-plugin .hr-settings-layout {
|
|
display: grid;
|
|
grid-template-columns: 14rem minmax(0, 1fr);
|
|
gap: 1rem;
|
|
align-items: start;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-settings-nav {
|
|
display: grid;
|
|
gap: 1px;
|
|
padding: 0.5rem;
|
|
border: 1px solid var(--hr-border);
|
|
background: color-mix(in srgb, var(--hr-surface-muted) 55%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-settings-nav-label {
|
|
padding: 0.4rem 0.55rem 0.6rem;
|
|
color: var(--hr-muted);
|
|
font-family: var(--theme-font-display, var(--theme-font-sans));
|
|
font-size: 0.75rem;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-settings-nav-item {
|
|
width: 100%;
|
|
justify-content: flex-start;
|
|
padding: 0.55rem 0.65rem;
|
|
border: 0;
|
|
border-radius: 0;
|
|
background: transparent;
|
|
color: var(--hr-muted);
|
|
font-family: var(--theme-font-sans);
|
|
font-size: 0.8rem;
|
|
text-align: left;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-settings-nav-item:hover,
|
|
.hermes-relay-plugin .hr-settings-nav-item.active {
|
|
background: var(--hr-surface-muted);
|
|
color: var(--hr-text);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-settings-nav-item.active {
|
|
box-shadow: inset 2px 0 0 var(--hr-text);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-settings-content {
|
|
min-width: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-audit-details {
|
|
border: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-audit-details > summary {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 1rem;
|
|
padding: 0.75rem;
|
|
cursor: pointer;
|
|
list-style: none;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-audit-details > summary::-webkit-details-marker {
|
|
display: none;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-audit-blocks,
|
|
.hermes-relay-plugin .hr-audit-empty {
|
|
padding: 0 0.75rem 0.75rem;
|
|
}
|
|
|
|
/* Pairing uses the host Dialog primitive; these rules only compose its body. */
|
|
|
|
.hermes-relay-plugin.hr-pair-dialog {
|
|
width: min(72rem, calc(100vw - 2rem));
|
|
max-width: 72rem;
|
|
max-height: min(90vh, 52rem);
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin.hr-pair-dialog [data-slot="dialog-header"] {
|
|
padding-right: 3rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-body {
|
|
display: grid;
|
|
grid-template-columns: minmax(34rem, 1.05fr) minmax(22rem, 0.95fr);
|
|
gap: 1rem;
|
|
padding: 1rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-qr-column,
|
|
.hermes-relay-plugin .hr-pair-options-column {
|
|
display: grid;
|
|
align-content: start;
|
|
gap: 0.75rem;
|
|
min-width: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-loading {
|
|
display: grid;
|
|
min-height: 20rem;
|
|
place-items: center;
|
|
border: 1px dashed var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-code-row,
|
|
.hermes-relay-plugin .hr-pair-connection-header,
|
|
.hermes-relay-plugin .hr-endpoint-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-panel,
|
|
.hermes-relay-plugin .hr-pair-advanced {
|
|
display: grid;
|
|
gap: 0.75rem;
|
|
padding: 0.85rem;
|
|
border: 1px solid var(--hr-border);
|
|
background: color-mix(in srgb, var(--hr-surface-muted) 50%, transparent);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-panel-title,
|
|
.hermes-relay-plugin .hr-pair-advanced > summary {
|
|
font-family: var(--theme-font-display, var(--theme-font-sans));
|
|
font-size: 0.8rem;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-list {
|
|
display: grid;
|
|
border-top: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-route {
|
|
display: grid;
|
|
gap: 0.35rem;
|
|
padding: 0.65rem 0;
|
|
border-bottom: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-route:last-child {
|
|
padding-bottom: 0;
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-route > .hr-endpoint-row {
|
|
padding: 0;
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-row {
|
|
padding: 0.65rem 0;
|
|
border-bottom: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-row:last-child {
|
|
padding-bottom: 0;
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-surfaces {
|
|
display: grid;
|
|
gap: 0.35rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-surface {
|
|
display: grid;
|
|
grid-template-columns: minmax(5.5rem, auto) minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-address {
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-advanced {
|
|
padding: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-advanced > summary {
|
|
padding: 0.85rem;
|
|
cursor: pointer;
|
|
list-style: none;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-advanced > summary::-webkit-details-marker {
|
|
display: none;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-advanced-content {
|
|
padding: 0 0.85rem 0.85rem;
|
|
border-top: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-checkbox {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
min-height: 2.25rem;
|
|
}
|
|
|
|
@media (max-width: 860px) {
|
|
.hermes-relay-plugin .hr-overview-grid,
|
|
.hermes-relay-plugin .hr-connection-choice-grid,
|
|
.hermes-relay-plugin .hr-settings-layout,
|
|
.hermes-relay-plugin .hr-pair-body {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-settings-nav {
|
|
display: flex;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-settings-nav-label {
|
|
display: none;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-settings-nav-item {
|
|
width: auto;
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-settings-nav-item.active {
|
|
box-shadow: inset 0 -2px 0 var(--hr-text);
|
|
}
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
.hermes-relay-plugin .hr-plugin-toolbar {
|
|
align-items: stretch;
|
|
flex-direction: column;
|
|
gap: 0.35rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-live-control {
|
|
align-self: flex-end;
|
|
padding-bottom: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-service-header,
|
|
.hermes-relay-plugin .hr-device-card {
|
|
align-items: stretch;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-service-details {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-service-details > div {
|
|
min-width: 0;
|
|
padding: 0;
|
|
margin: 0;
|
|
border-right: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-device-actions {
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.hermes-relay-plugin.hr-pair-dialog {
|
|
width: calc(100vw - 1rem);
|
|
max-height: calc(100vh - 1rem);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-body {
|
|
padding: 0.75rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-connection-header {
|
|
align-items: stretch;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pair-connection-header select {
|
|
width: 100%;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-surface {
|
|
grid-template-columns: minmax(5.5rem, auto) minmax(0, 1fr);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-endpoint-surface > :last-child {
|
|
grid-column: 2;
|
|
justify-self: start;
|
|
}
|
|
}
|
|
|
|
.hermes-relay-plugin .fixed {
|
|
position: fixed;
|
|
}
|
|
|
|
.hermes-relay-plugin .inset-0 {
|
|
inset: 0;
|
|
}
|
|
|
|
.hermes-relay-plugin .z-50 {
|
|
z-index: 50;
|
|
}
|
|
|
|
.hermes-relay-plugin .fixed.inset-0 {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 1rem;
|
|
background: var(--hr-overlay);
|
|
backdrop-filter: blur(2px);
|
|
overflow: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin .fixed.inset-0 > * {
|
|
width: min(36rem, calc(100vw - 2rem));
|
|
max-height: min(90vh, 48rem);
|
|
overflow-y: auto;
|
|
box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
|
|
}
|
|
|
|
.hermes-relay-plugin .fixed.inset-0 .bg-white {
|
|
display: flex;
|
|
justify-content: center;
|
|
width: fit-content;
|
|
max-width: 100%;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin.hr-modal-backdrop,
|
|
.hermes-relay-plugin .hr-modal-backdrop {
|
|
position: fixed !important;
|
|
inset: 0 !important;
|
|
z-index: 2147483000 !important;
|
|
display: flex !important;
|
|
align-items: center !important;
|
|
justify-content: center !important;
|
|
width: 100vw !important;
|
|
min-height: 100vh !important;
|
|
padding: clamp(1rem, 3vw, 2rem) !important;
|
|
background: var(--hr-overlay) !important;
|
|
backdrop-filter: blur(6px);
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-modal-card {
|
|
width: min(38rem, calc(100vw - 2rem));
|
|
max-height: min(90vh, 54rem);
|
|
overflow-y: auto;
|
|
border: 1px solid var(--hr-border);
|
|
border-radius: var(--radius-lg, 8px);
|
|
background: var(--hr-popover) !important;
|
|
color: var(--hr-popover-text);
|
|
box-shadow: 0 28px 96px rgba(0, 0, 0, 0.68);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-modal-header {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: 0.75rem;
|
|
padding: 1rem 1rem 0.75rem;
|
|
border-bottom: 1px solid var(--hr-border);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-modal-title {
|
|
margin: 0;
|
|
font-size: 1.125rem;
|
|
line-height: 1.25;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-modal-close {
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-modal-body {
|
|
padding: 1rem;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-qr-frame {
|
|
display: flex;
|
|
justify-content: center;
|
|
width: fit-content;
|
|
max-width: 100%;
|
|
margin: 0 auto;
|
|
padding: 0.75rem;
|
|
border: 1px solid var(--hr-border);
|
|
border-radius: var(--radius-lg, 8px);
|
|
background: #fff !important;
|
|
box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-qr-frame canvas {
|
|
display: block;
|
|
width: min(280px, calc(100vw - 5rem)) !important;
|
|
height: auto !important;
|
|
max-width: 100%;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pairing-qr {
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-pairing-qr canvas {
|
|
width: auto !important;
|
|
height: auto !important;
|
|
max-width: none;
|
|
image-rendering: pixelated;
|
|
}
|
|
|
|
@media (max-width: 980px) {
|
|
.hermes-relay-plugin .hr-pair-body {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 560px) {
|
|
.hermes-relay-plugin.hr-modal-backdrop,
|
|
.hermes-relay-plugin .hr-modal-backdrop {
|
|
align-items: flex-start !important;
|
|
padding: 0.75rem !important;
|
|
}
|
|
|
|
.hermes-relay-plugin .hr-modal-card {
|
|
width: 100%;
|
|
max-height: calc(100vh - 1.5rem);
|
|
}
|
|
}
|