Restore Status readings, inbound MX DNS and recipient modes, two-column Backup and Settings, domain-card help, and Host/name Type field height. Co-Authored-By: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -182,6 +182,8 @@ body:has(#mail-queue:target) .n-queue,
|
||||
body:has(#system-log:target) .n-log,
|
||||
body:has(#inbound:target) .n-inbound,
|
||||
body:has(#inbound-domain:target) .n-inbound,
|
||||
body:has(#inbound-backup:target) .n-inbound,
|
||||
body:has(#inbound-delete:target) .n-inbound,
|
||||
body:has(#dmarc:target) .n-dmarc,
|
||||
body:has(#backup:target) .n-backup,
|
||||
body:has(#users:target) .n-users,
|
||||
@@ -205,7 +207,9 @@ body:has(#delivery:target) .pt-delivery,
|
||||
body:has(#mail-queue:target) .pt-queue,
|
||||
body:has(#system-log:target) .pt-log,
|
||||
body:has(#inbound:target) .pt-inbound,
|
||||
body:has(#inbound-domain:target) .pt-inbound,
|
||||
body:has(#inbound-domain:target) .pt-inbound-domain,
|
||||
body:has(#inbound-backup:target) .pt-inbound-backup,
|
||||
body:has(#inbound-delete:target) .pt-inbound-domain,
|
||||
body:has(#dmarc:target) .pt-dmarc,
|
||||
body:has(#backup:target) .pt-backup,
|
||||
body:has(#users:target) .pt-users,
|
||||
@@ -263,6 +267,10 @@ body:has(#login:target) .app,
|
||||
body:has(#setup:target) .app { display: block; }
|
||||
|
||||
#role-domain:checked ~ .app .g-only { display: none !important; }
|
||||
#role-domain:checked ~ .app #settings .split {
|
||||
display: block;
|
||||
max-width: var(--form-max);
|
||||
}
|
||||
#feat-inbound:not(:checked) ~ .app .in-only { display: none !important; }
|
||||
#feat-inbound:checked ~ .app .in-off { display: none !important; }
|
||||
|
||||
@@ -315,11 +323,17 @@ button:hover, a.btn:hover { background: var(--accent-fill-hover); }
|
||||
button.danger, a.danger { background: var(--danger-fill); color: var(--on-accent); }
|
||||
button.danger:hover, a.danger:hover { background: var(--danger-fill-hover); }
|
||||
form.inline { display: inline; margin: 0; }
|
||||
.form-actions {
|
||||
display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center;
|
||||
margin-top: 1.1rem;
|
||||
}
|
||||
.form-actions > button, .form-actions > a.btn, .form-actions > a.danger { margin-top: 0; }
|
||||
|
||||
.st {
|
||||
display: inline-block; padding: 0.14rem 0.45rem 0.28rem; border-radius: 4px;
|
||||
font-family: var(--font-mono); font-size: 0.78rem; font-weight: 500; line-height: 1;
|
||||
letter-spacing: 0.02em; vertical-align: middle; border: 1px solid transparent;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.st-ok { background: var(--st-ok-bg); color: var(--st-ok-fg); border-color: var(--st-ok-border); }
|
||||
.st-warn { background: var(--st-warn-bg); color: var(--st-warn-fg); border-color: var(--st-warn-border); }
|
||||
@@ -328,20 +342,25 @@ form.inline { display: inline; margin: 0; }
|
||||
a.st, a.st:hover { color: inherit; text-decoration: none; }
|
||||
|
||||
table { width: 100%; border-collapse: collapse; }
|
||||
th, td { text-align: left; padding: 0.5rem 0.45rem; border-bottom: 1px solid var(--border); overflow-wrap: anywhere; }
|
||||
th, td {
|
||||
text-align: left; padding: 0.5rem 0.45rem; border-bottom: 1px solid var(--border);
|
||||
white-space: nowrap;
|
||||
}
|
||||
th {
|
||||
font-family: var(--font-mono); font-size: 0.75rem; font-weight: 500;
|
||||
text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted);
|
||||
}
|
||||
td.time, td.status { white-space: nowrap; }
|
||||
td.actions { text-align: right; white-space: nowrap; }
|
||||
td.actions { text-align: right; }
|
||||
.metric { white-space: nowrap; }
|
||||
.card:has(table) { overflow-x: auto; }
|
||||
td.subject span {
|
||||
display: block; max-width: 22rem;
|
||||
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||||
}
|
||||
|
||||
.code {
|
||||
display: block; white-space: pre-wrap; word-break: break-all; font-family: var(--font-mono);
|
||||
display: block; white-space: pre; overflow-x: auto; overflow-wrap: normal;
|
||||
word-break: normal; font-family: var(--font-mono);
|
||||
font-size: 0.85rem; background: var(--code-bg); border: 1px solid var(--border);
|
||||
border-radius: 5px; padding: 0.7rem 0.8rem; margin: 0.3rem 0 0;
|
||||
}
|
||||
@@ -355,9 +374,15 @@ td.subject span {
|
||||
display: grid; grid-template-columns: repeat(auto-fit, minmax(22rem, 1fr));
|
||||
gap: 1rem; margin-top: 1rem;
|
||||
}
|
||||
h1 + .split, h1 + form > .split { margin-top: 0; }
|
||||
.split > .card { min-width: 0; }
|
||||
.split > .card + .card { margin-top: 0; }
|
||||
.split + .card, .card + .split { margin-top: 1rem; }
|
||||
.split + .card, .card + .split, form:has(.split) + .card { margin-top: 1rem; }
|
||||
#settings form { width: 100%; max-width: none; }
|
||||
#settings .split,
|
||||
#backup > .split {
|
||||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
||||
}
|
||||
|
||||
.check-cols {
|
||||
display: grid; grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
|
||||
@@ -369,9 +394,21 @@ td.subject span {
|
||||
display: grid; grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
|
||||
gap: 0 1rem; margin-top: 0.45rem;
|
||||
}
|
||||
.field-pair.host-type { grid-template-columns: minmax(0, 1fr) auto; }
|
||||
.field-pair > div { min-width: 0; }
|
||||
.field-pair label { margin-top: 0.45rem; }
|
||||
/* Host / name beside Type — size the type column to that token rather than
|
||||
giving it half the row. Vertical padding matches .code-row .code so Type is
|
||||
the same height as Host when Copy sits beside it. */
|
||||
.field-pair.host-type {
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
}
|
||||
.field-pair.host-type .code {
|
||||
padding-top: 0.45rem; padding-bottom: 0.45rem;
|
||||
}
|
||||
.field-type { width: max-content; }
|
||||
.field-type .code { width: fit-content; min-width: 2.75rem; text-align: center; padding: 0.45rem; }
|
||||
.field-type .code {
|
||||
width: fit-content; min-width: 2.75rem; text-align: center; box-sizing: border-box;
|
||||
}
|
||||
|
||||
.facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); gap: 0.5rem; margin-top: 1rem; }
|
||||
.fact { min-width: 0; padding: 0.5rem 0.7rem; border-radius: 6px; background: var(--surface-bg); }
|
||||
@@ -379,7 +416,7 @@ td.subject span {
|
||||
display: block; font-family: var(--font-mono); font-size: 0.7rem; font-weight: 500;
|
||||
text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted);
|
||||
}
|
||||
.fact-value { display: block; margin-top: 0.1rem; overflow-wrap: anywhere; }
|
||||
.fact-value { display: block; margin-top: 0.1rem; white-space: nowrap; overflow-x: auto; }
|
||||
.fact-value.mono { font-family: var(--font-mono); font-size: 0.85rem; }
|
||||
|
||||
.timeline {
|
||||
@@ -402,12 +439,15 @@ td.subject span {
|
||||
.event-detail { margin: 0.2rem 0 0; font-size: 0.9rem; }
|
||||
|
||||
.route { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; margin-top: -0.5rem; margin-bottom: 1rem; }
|
||||
.route .addr { font-family: var(--font-mono); font-size: 0.9rem; overflow-wrap: anywhere; }
|
||||
.route .addr { font-family: var(--font-mono); font-size: 0.9rem; white-space: nowrap; overflow-x: auto; max-width: 100%; }
|
||||
.route .arrow { color: var(--muted); }
|
||||
|
||||
table.log { margin-top: 1rem; }
|
||||
table.log th:first-child, table.log td.time { width: 1%; }
|
||||
table.log td.log-text { font-family: var(--font-mono); font-size: 0.8rem; white-space: pre-wrap; }
|
||||
table.log td.log-text {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 0.8rem; white-space: pre;
|
||||
}
|
||||
|
||||
button.copy, .actions button, .actions > label.toggle, .actions a.danger {
|
||||
margin: 0; padding: 0.45rem 0.7rem; font-size: 0.8rem; font-weight: 600;
|
||||
@@ -422,7 +462,7 @@ button.copy:hover, .actions button:hover, .actions > label.toggle:hover { backgr
|
||||
.app-item { padding: 0.9rem 0; border-top: 1px solid var(--border); }
|
||||
.app-item:last-child { padding-bottom: 0; }
|
||||
.app-login { margin: 0; font-family: var(--font-mono); font-weight: 600; }
|
||||
.app-addr { margin: 0.15rem 0 0; word-break: break-all; }
|
||||
.app-addr { margin: 0.15rem 0 0; white-space: nowrap; overflow-x: auto; }
|
||||
.app-item .actions { margin-top: 0.7rem; }
|
||||
.app-item .actions > .panel-toggle {
|
||||
position: absolute; width: 1px; height: 1px; margin: 0; opacity: 0; pointer-events: none;
|
||||
@@ -440,6 +480,10 @@ button.copy:hover, .actions button:hover, .actions > label.toggle:hover { backgr
|
||||
.encrypt:has(input[type="checkbox"]:checked) .encrypt-fields { display: block; }
|
||||
.encrypt-fields label { margin-top: 0.7rem; }
|
||||
|
||||
.rcpt-list, .rcpt-any { display: none; }
|
||||
.rcpt-mode:has(option[value="list"]:checked) .rcpt-list { display: block; }
|
||||
.rcpt-mode:has(option[value="any"]:checked) .rcpt-any { display: block; }
|
||||
|
||||
.toolbar {
|
||||
display: flex; flex-wrap: wrap; gap: 0.6rem 1rem; align-items: end;
|
||||
padding: 0.85rem 1rem; margin-bottom: 1rem;
|
||||
@@ -455,7 +499,8 @@ button.copy:hover, .actions button:hover, .actions > label.toggle:hover { backgr
|
||||
padding: 1rem 1.25rem; margin-bottom: 1rem;
|
||||
background: var(--card-bg); border: 1px solid var(--border); border-radius: 6px;
|
||||
}
|
||||
.status-hero.attn { border-color: var(--st-warn-border); background: var(--st-warn-bg); }
|
||||
.status-hero.attn,
|
||||
.card.attn { border-color: var(--st-warn-border); }
|
||||
.status-hero h1 { margin: 0; }
|
||||
.status-hero .lead { margin: 0; color: var(--fg); }
|
||||
.status-grid {
|
||||
@@ -480,7 +525,7 @@ meter { width: 5rem; height: 0.7rem; vertical-align: middle; margin-right: 0.4re
|
||||
flex: none; width: 1.35rem; height: 1.35rem; display: inline-flex; align-items: center; justify-content: center;
|
||||
border-radius: 50%; border: 1px solid var(--control-border); color: var(--muted);
|
||||
text-decoration: none; font-family: var(--font-mono); font-size: 0.75rem; font-weight: 600;
|
||||
background: var(--surface-bg);
|
||||
background: var(--surface-bg); cursor: pointer; margin: 0;
|
||||
}
|
||||
.help-link:hover { color: var(--accent-text); border-color: var(--accent-fill); }
|
||||
|
||||
@@ -500,7 +545,7 @@ meter { width: 5rem; height: 0.7rem; vertical-align: middle; margin-right: 0.4re
|
||||
padding: 0.75rem 0.1rem; text-decoration: none; color: var(--fg);
|
||||
}
|
||||
.phone-list .when { font-family: var(--font-mono); font-size: 0.75rem; color: var(--muted); }
|
||||
.phone-list .pair { grid-column: 1 / -1; font-family: var(--font-mono); font-size: 0.82rem; overflow-wrap: anywhere; }
|
||||
.phone-list .pair { grid-column: 1 / -1; font-family: var(--font-mono); font-size: 0.82rem; white-space: nowrap; overflow-x: auto; }
|
||||
.phone-list .subj { grid-column: 1 / -1; margin: 0; }
|
||||
|
||||
/* Help drawer — CSS checkbox, no script required */
|
||||
@@ -510,14 +555,35 @@ meter { width: 5rem; height: 0.7rem; vertical-align: middle; margin-right: 0.4re
|
||||
background: var(--card-bg); border-left: 1px solid var(--border);
|
||||
padding: 1.25rem 1.35rem 2rem; overflow-y: auto;
|
||||
}
|
||||
#help-open:checked ~ .help-drawer { display: block; }
|
||||
#help-open:checked ~ .help-scrim { display: block; }
|
||||
html:has(input[name="help"]:checked):not(:has(#help-off:checked)) .help-drawer,
|
||||
html:has(input[name="help"]:checked):not(:has(#help-off:checked)) .help-scrim { display: block; }
|
||||
.help-pane { display: none; }
|
||||
html:has(#help-index:checked) .help-pane-index,
|
||||
html:has(#help-status:checked) .help-pane-status,
|
||||
html:has(#help-password:checked) .help-pane-password,
|
||||
html:has(#help-dns:checked) .help-pane-dns,
|
||||
html:has(#help-records:checked) .help-pane-records,
|
||||
html:has(#help-dmarc:checked) .help-pane-dmarc,
|
||||
html:has(#help-connection:checked) .help-pane-connection,
|
||||
html:has(#help-apps:checked) .help-pane-apps,
|
||||
html:has(#help-domain-settings:checked) .help-pane-domain-settings,
|
||||
html:has(#help-export:checked) .help-pane-export { display: block; }
|
||||
.help-scrim {
|
||||
display: none; position: fixed; inset: var(--gallery-h) 0 0 0; z-index: 25;
|
||||
background: rgba(18, 22, 28, 0.28);
|
||||
}
|
||||
.help-drawer h2 { margin-top: 1.2rem; }
|
||||
.help-drawer h2:first-of-type { margin-top: 0; }
|
||||
.help-drawer h2:first-of-type,
|
||||
.help-pane h2 { margin-top: 0; }
|
||||
.help-drawer .toc { list-style: none; margin: 0.7rem 0 0; padding: 0; }
|
||||
.help-drawer .toc li { margin: 0.35rem 0 0; }
|
||||
.help-drawer .toc label {
|
||||
margin: 0; font-weight: 600; color: var(--accent-text); cursor: pointer;
|
||||
}
|
||||
.help-drawer .more { margin-top: 1.2rem; font-size: 0.85rem; }
|
||||
.help-drawer .more label {
|
||||
display: inline; margin: 0; font-weight: 600; color: var(--accent-text); cursor: pointer;
|
||||
}
|
||||
.help-close {
|
||||
position: absolute; top: 0.8rem; right: 0.8rem; margin: 0; padding: 0.35rem 0.6rem;
|
||||
font-size: 0.8rem; font-weight: 600; background: var(--surface-bg); color: var(--fg);
|
||||
@@ -562,7 +628,7 @@ meter { width: 5rem; height: 0.7rem; vertical-align: middle; margin-right: 0.4re
|
||||
#vp-phone:checked ~ .app .status-grid .attn { order: -1; }
|
||||
#vp-phone:checked ~ .app .split,
|
||||
#vp-phone:checked ~ .app .check-cols,
|
||||
#vp-phone:checked ~ .app .field-pair,
|
||||
#vp-phone:checked ~ .app .field-pair:not(.host-type),
|
||||
#vp-phone:checked ~ .app .facts,
|
||||
#vp-phone:checked ~ .app .retry-facts {
|
||||
grid-template-columns: 1fr;
|
||||
@@ -599,7 +665,8 @@ meter { width: 5rem; height: 0.7rem; vertical-align: middle; margin-right: 0.4re
|
||||
.phone-only, .phone-list { display: block; }
|
||||
.status-grid { display: flex; flex-direction: column; }
|
||||
.status-grid .attn { order: -1; }
|
||||
.split, .check-cols, .field-pair, .facts, .retry-facts { grid-template-columns: 1fr; }
|
||||
.split, #settings .split, #backup > .split,
|
||||
.check-cols, .field-pair:not(.host-type), .facts, .retry-facts { grid-template-columns: 1fr; }
|
||||
.help-drawer { width: 100vw; }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user