v0.32.0
This commit is contained in:
1 parent
d23fa5e154
commit
81ab39e70a
51 files changed
+5352
-1489
No files matched your search
+416
-54
@@ -8474,8 +8474,14 @@ button.config-history-day.is-selected {
|
||||
display: block;
|
||||
overflow: visible;
|
||||
}
|
||||
.config-history-revisions { max-height: none; }
|
||||
.config-history-diff { overflow: visible; }
|
||||
|
||||
.config-history-revisions {
|
||||
max-height: none;
|
||||
}
|
||||
|
||||
.config-history-diff {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.config-history-change-values {
|
||||
grid-template-columns: 1fr;
|
||||
@@ -8723,7 +8729,6 @@ button.config-history-day.is-selected {
|
||||
box-shadow: 0 1px 0 var(--line);
|
||||
}
|
||||
|
||||
/* Stored Logs sorting is performed by the bounded server scan before pagination. */
|
||||
.file-logs-table th .file-log-sort-button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
@@ -8737,10 +8742,20 @@ button.config-history-day.is-selected {
|
||||
cursor: pointer;
|
||||
text-align: left;
|
||||
}
|
||||
.file-logs-table th .file-log-sort-button:hover { color: var(--accent); }
|
||||
|
||||
.file-logs-table th .file-log-sort-button:hover {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
.file-logs-table th[aria-sort="ascending"] .file-log-sort-button,
|
||||
.file-logs-table th[aria-sort="descending"] .file-log-sort-button { color: var(--accent); }
|
||||
.file-logs-table .file-log-sort-indicator { font-size: 11px; opacity: .8; }
|
||||
.file-logs-table th[aria-sort="descending"] .file-log-sort-button {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
.file-logs-table .file-log-sort-indicator {
|
||||
font-size: 11px;
|
||||
opacity: .8;
|
||||
}
|
||||
|
||||
.file-logs-table tbody tr:not(.file-log-detail-row) {
|
||||
cursor: pointer;
|
||||
@@ -9789,7 +9804,6 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
stroke-linejoin: var(--chart-linejoin);
|
||||
}
|
||||
|
||||
/* Compact toolbar fields use one scaled box model, so native selects and inputs stay aligned. */
|
||||
.backend-table-tools,
|
||||
.vhost-list-tools,
|
||||
.docker-toolbar,
|
||||
@@ -9814,7 +9828,6 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
padding-block: 0
|
||||
}
|
||||
|
||||
/* ACL policy builder: guided OR-composition for country + IP exceptions. */
|
||||
.acl-profile-layout {
|
||||
grid-template-columns: minmax(260px, .72fr) minmax(440px, 1.28fr)
|
||||
}
|
||||
@@ -10277,6 +10290,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
.cache-maintenance-info .metric-info-popover code+.fine {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
/* Stored Logs: compact header option and distinct analysis workspace. */
|
||||
.file-logs-heading-actions .file-log-consolidate {
|
||||
display: inline-flex;
|
||||
@@ -10290,23 +10304,72 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
}
|
||||
.file-log-consolidate input { width: 14px; height: 14px; margin: 0; accent-color: var(--accent); }
|
||||
.file-log-consolidate:hover { color: var(--text); }
|
||||
.file-log-tabs { display: flex; gap: .25rem; border-bottom: 1px solid var(--line); margin: .9rem 0 1rem; }
|
||||
|
||||
.file-log-consolidate input {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
margin: 0;
|
||||
accent-color: var(--accent);
|
||||
}
|
||||
|
||||
.file-log-consolidate:hover {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.file-log-tabs {
|
||||
display: flex;
|
||||
gap: .25rem;
|
||||
border-bottom: 1px solid var(--line);
|
||||
margin: .9rem 0 1rem;
|
||||
}
|
||||
|
||||
.file-log-tab {
|
||||
appearance: none; background: transparent; border: 0; border-bottom: 2px solid transparent;
|
||||
border-radius: 0; padding: .65rem 1rem; color: var(--muted); cursor: pointer;
|
||||
font: inherit; font-weight: 500;
|
||||
appearance: none;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
border-bottom: 2px solid transparent;
|
||||
border-radius: 0;
|
||||
padding: .65rem 1rem;
|
||||
color: var(--muted);
|
||||
cursor: pointer;
|
||||
font: inherit;
|
||||
font-weight: 500;
|
||||
}
|
||||
.file-log-tab:hover { color: var(--text); }
|
||||
.file-log-tab.active { color: var(--text); border-bottom-color: var(--accent); }
|
||||
.file-log-tab:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
||||
#file-log-view-counts[hidden], #file-log-view-entries[hidden] { display: none !important; }
|
||||
.file-log-advanced-parser h3 { margin: 0 0 .7rem; font-size: 1rem; }
|
||||
|
||||
.file-log-tab:hover {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.file-log-tab.active {
|
||||
color: var(--text);
|
||||
border-bottom-color: var(--accent);
|
||||
}
|
||||
|
||||
.file-log-tab:focus-visible {
|
||||
outline: 2px solid var(--accent);
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
#file-log-view-counts[hidden],
|
||||
#file-log-view-entries[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.file-log-advanced-parser h3 {
|
||||
margin: 0 0 .7rem;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.file-logs-heading-actions .file-log-consolidate { margin-inline-end: auto; }
|
||||
.file-log-tab { padding: .6rem .7rem; }
|
||||
.file-logs-heading-actions .file-log-consolidate {
|
||||
margin-inline-end: auto;
|
||||
}
|
||||
|
||||
.file-log-tab {
|
||||
padding: .6rem .7rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* 0.31.5 traffic/log analysis actions */
|
||||
.traffic-copy-value,
|
||||
.file-log-aggregate-copy {
|
||||
@@ -10320,18 +10383,21 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
margin: 0;
|
||||
cursor: copy;
|
||||
}
|
||||
|
||||
.traffic-copy-value:hover,
|
||||
.traffic-copy-value:focus-visible,
|
||||
.file-log-aggregate-copy:hover,
|
||||
.file-log-aggregate-copy:focus-visible {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.file-log-advanced-parser {
|
||||
margin: 0 0 1rem;
|
||||
padding: .75rem 1rem;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius, 12px);
|
||||
}
|
||||
|
||||
.file-log-aggregate-form {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(220px, 2fr) minmax(140px, 1fr) minmax(120px, 1fr) auto;
|
||||
@@ -10339,16 +10405,21 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
align-items: end;
|
||||
margin-top: .75rem;
|
||||
}
|
||||
|
||||
.file-log-aggregate-table {
|
||||
margin-top: .75rem;
|
||||
}
|
||||
|
||||
.file-log-aggregate-table th:last-child,
|
||||
.file-log-aggregate-table td:last-child {
|
||||
width: 8rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
@media (max-width: 800px) {
|
||||
.file-log-aggregate-form { grid-template-columns: 1fr; }
|
||||
.file-log-aggregate-form {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10356,6 +10427,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
The complete parsed JSON is available by opening any row, while the desktop
|
||||
table and the persisted column picker keep their original behavior. */
|
||||
@media (max-width: 700px) {
|
||||
|
||||
#panel-filelogs,
|
||||
#panel-filelogs .file-logs-workspace,
|
||||
#file-log-view-entries,
|
||||
@@ -10368,33 +10440,43 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-workspace {
|
||||
gap: 10px;
|
||||
padding: 12px;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#panel-filelogs .card-heading {
|
||||
min-width: 0;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-heading-actions {
|
||||
width: 100%;
|
||||
justify-content: flex-start;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-heading-actions .file-log-consolidate {
|
||||
margin-inline-end: auto;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-log-search-help-popover {
|
||||
width: min(320px, calc(100vw - 54px));
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-filter,
|
||||
#panel-filelogs .file-log-aggregate-form {
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
}
|
||||
#panel-filelogs .file-log-limit { max-width: none; }
|
||||
|
||||
#panel-filelogs .file-log-limit {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-filter label,
|
||||
#panel-filelogs .file-logs-filter input,
|
||||
#panel-filelogs .file-logs-filter select,
|
||||
@@ -10404,21 +10486,31 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
#panel-filelogs .file-log-tabs { min-width: 0; }
|
||||
|
||||
#panel-filelogs .file-log-tabs {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-log-tab {
|
||||
flex: 1 1 0;
|
||||
min-width: 0;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table-toolbar {
|
||||
align-items: flex-start;
|
||||
gap: 5px;
|
||||
}
|
||||
#panel-filelogs .file-log-column-picker { align-self: flex-end; }
|
||||
|
||||
#panel-filelogs .file-log-column-picker {
|
||||
align-self: flex-end;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table {
|
||||
max-height: none;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table table,
|
||||
#panel-filelogs .file-logs-table tbody {
|
||||
display: block;
|
||||
@@ -10426,7 +10518,11 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
min-width: 0;
|
||||
white-space: normal;
|
||||
}
|
||||
#panel-filelogs .file-logs-table thead { display: none; }
|
||||
|
||||
#panel-filelogs .file-logs-table thead {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table tbody tr:not(.file-log-detail-row) {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
||||
@@ -10438,12 +10534,17 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
border: 1px solid var(--line);
|
||||
background: var(--panel);
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table tbody tr:focus-visible {
|
||||
outline: 2px solid var(--accent);
|
||||
outline-offset: -2px;
|
||||
}
|
||||
#panel-filelogs .file-logs-table tbody tr.selected { border-color: var(--accent); }
|
||||
#panel-filelogs .file-logs-table tbody tr:not(.file-log-detail-row) > td {
|
||||
|
||||
#panel-filelogs .file-logs-table tbody tr.selected {
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table tbody tr:not(.file-log-detail-row)>td {
|
||||
display: block;
|
||||
min-width: 0;
|
||||
max-width: none;
|
||||
@@ -10454,6 +10555,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
white-space: normal;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
/* Every user-selected column is available even when the administrator
|
||||
replaces all default columns with custom parsed fields. */
|
||||
#panel-filelogs .file-logs-table td[data-mobile-column="record"] {
|
||||
@@ -10462,6 +10564,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
line-height: 1.45;
|
||||
padding-inline-end: 16px;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table td[data-mobile-column="time"],
|
||||
#panel-filelogs .file-logs-table td[data-mobile-column="event"],
|
||||
#panel-filelogs .file-logs-table td[data-mobile-column="status"],
|
||||
@@ -10469,14 +10572,17 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
color: var(--muted);
|
||||
font-size: 11px;
|
||||
}
|
||||
#panel-filelogs .file-logs-table tbody tr:not(.file-log-detail-row) > td::before {
|
||||
|
||||
#panel-filelogs .file-logs-table tbody tr:not(.file-log-detail-row)>td::before {
|
||||
content: attr(data-mobile-label) ": ";
|
||||
color: var(--text-subtle);
|
||||
font-weight: 400;
|
||||
}
|
||||
#panel-filelogs .file-logs-table tbody tr:not(.file-log-detail-row) > td[data-mobile-column="record"]::before {
|
||||
|
||||
#panel-filelogs .file-logs-table tbody tr:not(.file-log-detail-row)>td[data-mobile-column="record"]::before {
|
||||
content: "";
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table tbody tr:not(.file-log-detail-row)::after {
|
||||
content: "+";
|
||||
position: absolute;
|
||||
@@ -10486,7 +10592,11 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
font-size: 15px;
|
||||
pointer-events: none;
|
||||
}
|
||||
#panel-filelogs .file-logs-table tbody tr.selected::after { content: "-"; }
|
||||
|
||||
#panel-filelogs .file-logs-table tbody tr.selected::after {
|
||||
content: "-";
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table .file-log-detail-row {
|
||||
display: block;
|
||||
margin: -8px 0 8px;
|
||||
@@ -10494,6 +10604,7 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
border-top: 0;
|
||||
background: var(--panel2);
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table .file-log-detail-row td {
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
@@ -10502,21 +10613,40 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
max-width: 100%;
|
||||
white-space: normal;
|
||||
}
|
||||
#panel-filelogs .file-log-field { grid-template-columns: minmax(0, 1fr); }
|
||||
#panel-filelogs .file-log-inline-detail { min-width: 0; padding: 8px; }
|
||||
#panel-filelogs .file-log-inline-detail pre { max-width: 100%; overflow-x: auto; }
|
||||
|
||||
#panel-filelogs .file-log-field {
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
}
|
||||
|
||||
#panel-filelogs .file-log-inline-detail {
|
||||
min-width: 0;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-log-inline-detail pre {
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-log-aggregate-table {
|
||||
box-sizing: border-box;
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
}
|
||||
#panel-filelogs .file-log-aggregate-table table { table-layout: fixed; }
|
||||
|
||||
#panel-filelogs .file-log-aggregate-table table {
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-log-aggregate-table td:first-child {
|
||||
white-space: normal;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
#panel-filelogs .file-logs-pager { justify-content: space-between; }
|
||||
|
||||
#panel-filelogs .file-logs-pager {
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
/* Tablet/narrow-desktop log tables scroll locally instead of expanding <main>. */
|
||||
@@ -10527,7 +10657,11 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
#panel-filelogs .file-logs-workspace { grid-template-columns: minmax(0, 1fr); }
|
||||
|
||||
#panel-filelogs .file-logs-workspace {
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table,
|
||||
#panel-filelogs .file-log-aggregate-table {
|
||||
box-sizing: border-box;
|
||||
@@ -10535,14 +10669,22 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
#panel-filelogs .file-logs-table { overflow: visible; }
|
||||
#panel-filelogs .file-logs-table {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table td[data-mobile-column="time"],
|
||||
#panel-filelogs .file-logs-table td[data-mobile-column="vhost"] { grid-column: 1 / -1; }
|
||||
#panel-filelogs .file-logs-table td[data-mobile-column="vhost"] {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table td[data-mobile-column="record"] {
|
||||
max-height: 4.4em;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#panel-filelogs .file-logs-table tr.selected td[data-mobile-column="record"] {
|
||||
max-height: none;
|
||||
overflow-wrap: anywhere;
|
||||
@@ -10550,21 +10692,241 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
|
||||
}
|
||||
|
||||
/* 0.31.7: separate protocol tuning actions; keep them comfortably tappable. */
|
||||
.listener-protocol-settings-actions { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; margin-block: 10px; }
|
||||
.listener-protocol-settings-actions button { margin: 0; }
|
||||
.listener-protocol-settings-actions button[hidden] { display: none; }
|
||||
.listener-protocol-settings-actions {
|
||||
display: flex;
|
||||
gap: 14px;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
margin-block: 10px;
|
||||
}
|
||||
|
||||
.listener-protocol-settings-actions button {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.listener-protocol-settings-actions button[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* 0.31.7 revision preview shows only changed leaf fields. */
|
||||
.config-history-change-values { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
|
||||
.config-history-change-values .diff-before { color: var(--muted); text-decoration: line-through; }
|
||||
.config-history-change-values .diff-after { color: var(--text); }
|
||||
.config-history-change-values code { white-space: pre-wrap; overflow-wrap: anywhere; }
|
||||
.config-history-json-dialog { width: min(1200px, calc(100vw - 24px)); max-width: calc(100vw - 24px); max-height: calc(100dvh - 28px); overflow: auto; }
|
||||
.config-history-json-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 12px; }
|
||||
.config-history-json-columns section { min-width: 0; }
|
||||
.config-history-json-columns pre { padding: 12px; margin: 0; background: var(--panel); border: 0; overflow: auto; max-height: 68dvh; font: 11px/1.5 var(--mono); }
|
||||
@media (max-width: 760px) { .config-history-json-columns { grid-template-columns: 1fr; } .config-history-json-columns pre { max-height: 38dvh; } }
|
||||
.config-history-change-values {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.acl-profile-attached { margin-block: 6px; }
|
||||
.acl-profile-attached summary { cursor: pointer; color: var(--muted); font-size: 12px; }
|
||||
.acl-profile-attached p { overflow-wrap: anywhere; }
|
||||
.config-history-change-values .diff-before {
|
||||
color: var(--muted);
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.config-history-change-values .diff-after {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.config-history-change-values code {
|
||||
white-space: pre-wrap;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.config-history-json-dialog {
|
||||
width: min(1200px, calc(100vw - 24px));
|
||||
max-width: calc(100vw - 24px);
|
||||
max-height: calc(100dvh - 28px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.config-history-json-columns {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.config-history-json-columns section {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.config-history-json-columns pre {
|
||||
padding: 12px;
|
||||
margin: 0;
|
||||
background: var(--panel);
|
||||
border: 0;
|
||||
overflow: auto;
|
||||
max-height: 68dvh;
|
||||
font: 11px/1.5 var(--mono);
|
||||
}
|
||||
|
||||
@media (max-width: 760px) {
|
||||
.config-history-json-columns {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.config-history-json-columns pre {
|
||||
max-height: 38dvh;
|
||||
}
|
||||
}
|
||||
|
||||
.acl-profile-attached {
|
||||
margin-block: 6px;
|
||||
}
|
||||
|
||||
.acl-profile-attached summary {
|
||||
cursor: pointer;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.acl-profile-attached p {
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
/* v0.32 Stream extensions reuse the responsive Vhost editor and stat cards. */
|
||||
.stream-backend-pool {
|
||||
display: grid;
|
||||
gap: .8rem;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.stream-backend-list {
|
||||
display: grid;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.stream-backend-row {
|
||||
min-width: 0;
|
||||
border: 1px solid var(--line, #454d59);
|
||||
border-radius: .65rem;
|
||||
padding: .85rem;
|
||||
}
|
||||
|
||||
.stream-backend-row>legend {
|
||||
font-weight: 650;
|
||||
padding: 0 .35rem;
|
||||
}
|
||||
|
||||
.stream-backend-row>.quiet {
|
||||
margin-top: .6rem;
|
||||
}
|
||||
|
||||
.stream-backend-status {
|
||||
display: grid;
|
||||
gap: .4rem;
|
||||
padding: .75rem 0;
|
||||
}
|
||||
|
||||
.stream-backend-status-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: .5rem;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: .85em;
|
||||
}
|
||||
|
||||
.stream-backend-status-row>span:first-child {
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
[data-dashboard-widget^="stream_"][hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Description text is a tooltip, not a second line inside each Appearance tile. */
|
||||
.dashboard-widget-setting {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dashboard-widget-setting:is(:hover, :focus-within) {
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
.dashboard-widget-setting-label-block {
|
||||
display: block;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.dashboard-widget-description {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
inset-inline-start: 4px;
|
||||
top: calc(100% + 5px);
|
||||
width: max-content;
|
||||
max-width: min(290px, calc(100vw - 48px));
|
||||
box-sizing: border-box;
|
||||
padding: 9px 11px;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 6px;
|
||||
background: var(--panel2);
|
||||
box-shadow: 0 6px 20px rgba(0, 0, 0, .24);
|
||||
color: var(--text);
|
||||
font-size: 11px;
|
||||
font-weight: 400;
|
||||
line-height: 1.45;
|
||||
white-space: normal;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
pointer-events: none;
|
||||
transform: translateY(-4px);
|
||||
transition: opacity .12s ease, transform .12s ease, visibility .12s;
|
||||
}
|
||||
|
||||
.dashboard-widget-setting:is(:hover, :focus-within) .dashboard-widget-description {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.dashboard-widget-toggle:focus-visible {
|
||||
outline: 2px solid var(--accent);
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
.vh-enable-control.vh-enable-no-hint {
|
||||
grid-template-rows: auto;
|
||||
}
|
||||
|
||||
.vh-enable-control.vh-enable-no-hint> :is(input, .vh-enable-state) {
|
||||
grid-row: 1;
|
||||
}
|
||||
|
||||
#panel-overview .stats-grid>.stat {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
#panel-overview .stats-grid .stat>small {
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
#panel-overview .stream-traffic-legend .legend-rx i {
|
||||
background: var(--chart-accent);
|
||||
}
|
||||
|
||||
#panel-overview .stream-traffic-legend .legend-tx i {
|
||||
background: var(--chart-secondary);
|
||||
}
|
||||
|
||||
#panel-overview .stats-grid .stat-chart>.stat-chart-legend {
|
||||
flex-wrap: wrap;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
@media (min-width: 1201px) {
|
||||
#panel-overview .stats-grid {
|
||||
grid-template-columns: repeat(6, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
#panel-overview .stats-grid>.stat {
|
||||
min-height: 126px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html[data-dashboard-density="normal"] #panel-overview .stats-grid>.stat {
|
||||
min-height: 136px;
|
||||
}
|
||||
|
||||
html[data-dashboard-density="ultra"] #panel-overview .stats-grid>.stat {
|
||||
min-height: 105px;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user