html,
body {
min-height: 100%;
margin: 0;
background: #e9eef2;
}
body {
overflow-x: hidden;
}
body.dark-theme {
background: #071018;
}
[hidden] {
display: none !important;
}
.portal {
--canvas: #e9eef2;
--surface: #fcfdfd;
--surface-muted: #f2f5f7;
--surface-strong: #e6ecef;
--ink: #10212c;
--ink-soft: #314753;
--muted: #5b6e79;
--faint: #778993;
--line: #cdd7dd;
--line-strong: #9babb4;
--accent: #0a73c5;
--accent-hover: #075c9f;
--accent-soft: #e2f0fb;
--success: #087a56;
--success-soft: #dff3eb;
--warning: #9a5a0a;
--warning-soft: #faecd5;
--danger: #b22f46;
--danger-soft: #f9e3e7;
--instrument: #08151e;
--instrument-raised: #0d1d28;
--instrument-line: #29404d;
--instrument-text: #eff6f8;
--instrument-muted: #9fb0b9;
--instrument-blue: #39a0ff;
--instrument-green: #4fd0a0;
--instrument-amber: #f0b35b;
min-height: 100vh;
background: var(--canvas);
color: var(--ink);
color-scheme: light;
font-family:
ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
"Microsoft YaHei", sans-serif;
font-size: 14px;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
.portal.dark {
--canvas: #071018;
--surface: #0f1a23;
--surface-muted: #13212c;
--surface-strong: #1a2b37;
--ink: #edf4f7;
--ink-soft: #c4d0d6;
--muted: #98aab4;
--faint: #7f929d;
--line: #273b47;
--line-strong: #4a6270;
--accent: #55adf4;
--accent-hover: #77bdf7;
--accent-soft: #153653;
--success: #59d2a6;
--success-soft: #153b31;
--warning: #f0b35b;
--warning-soft: #3a2b18;
--danger: #ff8092;
--danger-soft: #43242c;
--instrument: #040b10;
--instrument-raised: #0a151d;
--instrument-line: #243b48;
--instrument-text: #f2f8fa;
--instrument-muted: #a1b2bb;
--instrument-blue: #55adf4;
--instrument-green: #5ad7a8;
--instrument-amber: #f2b85f;
color-scheme: dark;
}
.portal *,
.portal *::before,
.portal *::after {
box-sizing: border-box;
}
.portal button,
.portal input,
.portal select,
.portal textarea {
font: inherit;
}
.portal button,
.portal a,
.portal summary {
-webkit-tap-highlight-color: transparent;
}
.portal button:focus-visible,
.portal a:focus-visible,
.portal input:focus-visible,
.portal select:focus-visible,
.portal textarea:focus-visible,
.portal summary:focus-visible {
outline: 3px solid rgba(10, 115, 197, 0.28);
outline-offset: 2px;
}
.dark button:focus-visible,
.dark a:focus-visible,
.dark input:focus-visible,
.dark select:focus-visible,
.dark textarea:focus-visible,
.dark summary:focus-visible {
outline-color: rgba(85, 173, 244, 0.38);
}
.portal svg {
display: block;
fill: none;
stroke: currentColor;
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 1.8;
}
.icon-sprite {
position: absolute;
width: 0;
height: 0;
overflow: hidden;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
padding: 0;
border: 0;
margin: -1px;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
}
.app-header {
position: sticky;
top: 0;
z-index: 50;
border-bottom: 1px solid var(--line);
background: rgba(252, 253, 253, 0.94);
backdrop-filter: blur(14px);
}
.dark .app-header {
background: rgba(15, 26, 35, 0.94);
}
.app-header-inner {
width: min(calc(100% - 40px), 1240px);
min-height: 62px;
display: grid;
grid-template-columns: minmax(180px, 1fr) auto minmax(180px, 1fr);
align-items: stretch;
gap: 24px;
margin: 0 auto;
}
.brand {
width: fit-content;
display: inline-flex;
align-items: center;
gap: 10px;
padding: 0;
border: 0;
background: transparent;
color: var(--ink);
cursor: pointer;
text-align: left;
}
.brand-symbol {
width: 32px;
height: 32px;
display: grid;
place-items: center;
flex: 0 0 auto;
border: 1px solid var(--line);
border-radius: 7px;
background: #ffffff;
box-shadow: 0 4px 10px rgba(12, 31, 42, 0.08);
}
.brand-symbol img {
width: 22px;
height: 22px;
}
.brand > span:last-child {
display: grid;
gap: 1px;
}
.brand strong {
font-size: 14px;
line-height: 1.15;
letter-spacing: 0.01em;
}
.brand small {
color: var(--muted);
font-size: 11px;
line-height: 1.2;
}
.command-nav {
--nav-gap: 24px;
position: relative;
display: flex;
align-items: stretch;
gap: var(--nav-gap);
}
.command-nav::after {
position: absolute;
bottom: -1px;
left: 0;
width: 52px;
height: 2px;
background: var(--accent);
content: "";
transform: translateX(0);
transition: transform 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
.command-nav.config-active::after {
transform: translateX(calc(100% + var(--nav-gap)));
}
.command-nav button {
position: relative;
min-width: 52px;
padding: 1px 2px 0;
border: 0;
background: transparent;
color: var(--muted);
font-size: 13px;
font-weight: 650;
cursor: pointer;
transition: color 160ms ease;
}
.command-nav button:hover {
color: var(--ink);
}
.command-nav button.active {
color: var(--ink);
}
.command-nav button:disabled {
color: var(--muted);
cursor: not-allowed;
opacity: 0.38;
}
.header-actions {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 10px;
}
.header-health,
.save-state,
.connected-state {
display: inline-flex;
align-items: center;
gap: 8px;
color: var(--success);
font-size: 12px;
font-weight: 650;
white-space: nowrap;
transition: color 180ms ease;
}
.header-health i,
.save-state i,
.connected-state i {
width: 7px;
height: 7px;
flex: 0 0 auto;
border-radius: 50%;
background: currentColor;
box-shadow: 0 0 0 3px rgba(8, 122, 86, 0.11);
}
.header-health.attention,
.connected-state.attention,
.save-state.dirty {
color: var(--warning);
}
.header-health.attention i,
.connected-state.attention i,
.save-state.dirty i {
box-shadow: 0 0 0 3px rgba(154, 90, 10, 0.12);
}
.header-health.error,
.connected-state.error {
color: var(--danger);
}
.header-health.error i,
.connected-state.error i {
box-shadow: 0 0 0 3px rgba(178, 47, 70, 0.12);
}
.header-health.syncing {
color: var(--accent);
}
.header-health.syncing i {
box-shadow: 0 0 0 3px rgba(10, 115, 197, 0.13);
}
.connected-state.muted {
color: var(--faint);
}
.theme-button {
width: 34px;
height: 34px;
display: grid;
place-items: center;
padding: 0;
border: 1px solid transparent;
border-radius: 6px;
background: transparent;
color: var(--muted);
cursor: pointer;
transition:
border-color 150ms ease,
background-color 150ms ease,
color 150ms ease;
}
.theme-button:hover {
border-color: var(--line);
background: var(--surface-muted);
color: var(--ink);
}
.theme-button svg {
width: 17px;
height: 17px;
}
.theme-icon-sun {
display: none !important;
}
.dark .theme-icon-moon {
display: none !important;
}
.dark .theme-icon-sun {
display: block !important;
}
.stage {
min-height: calc(100vh - 62px);
}
.content {
width: min(calc(100% - 40px), 1240px);
margin: 0 auto;
padding: 38px 0 88px;
}
.overview-view,
.config-view {
scroll-margin-top: 86px;
}
.page-header {
min-height: 54px;
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 24px;
margin-bottom: 20px;
}
.page-header h1,
.page-header h2 {
margin: 0;
color: var(--ink);
font-size: 22px;
font-weight: 720;
letter-spacing: -0.02em;
line-height: 1.2;
}
.page-header p {
max-width: 66ch;
margin: 6px 0 0;
color: var(--muted);
font-size: 13px;
}
.button {
min-height: 38px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 0 14px;
border: 1px solid transparent;
border-radius: 6px;
font-size: 13px;
font-weight: 680;
line-height: 1;
text-decoration: none;
cursor: pointer;
transition:
border-color 150ms ease,
background-color 150ms ease,
color 150ms ease,
box-shadow 150ms ease;
}
.button svg {
width: 16px;
height: 16px;
}
.button.primary {
border-color: var(--accent);
background: var(--accent);
color: #ffffff;
box-shadow: 0 6px 14px rgba(7, 92, 159, 0.18);
}
.button.primary:hover:not(:disabled) {
border-color: var(--accent-hover);
background: var(--accent-hover);
box-shadow: 0 8px 18px rgba(7, 92, 159, 0.24);
}
.button.secondary {
border-color: var(--line);
background: var(--surface);
color: var(--ink);
}
.button.secondary:hover:not(:disabled) {
border-color: var(--line-strong);
background: var(--surface-muted);
}
.button.ghost {
border-color: transparent;
background: transparent;
color: var(--muted);
}
.button.ghost:hover:not(:disabled) {
border-color: var(--line);
background: var(--surface-muted);
color: var(--ink);
}
.button.danger {
color: var(--danger);
}
.button:disabled {
cursor: not-allowed;
opacity: 0.48;
box-shadow: none;
}
.status-hero {
position: relative;
overflow: hidden;
border: 1px solid #203542;
border-radius: 12px;
background: var(--instrument);
color: var(--instrument-text);
box-shadow: 0 16px 34px rgba(15, 36, 48, 0.16);
}
.status-hero::after {
position: absolute;
z-index: 3;
inset: 2px;
border: 1px solid transparent;
border-radius: 9px;
content: "";
opacity: 0;
pointer-events: none;
}
.status-hero.sync-complete {
--sync-result: var(--instrument-green);
}
.status-hero.sync-failed {
--sync-result: #ff8092;
}
.status-hero.sync-complete::after,
.status-hero.sync-failed::after {
border-color: var(--sync-result);
animation: result-frame 640ms cubic-bezier(0.16, 1, 0.3, 1);
}
.status-hero.sync-complete .latest-signal strong,
.status-hero.sync-failed .latest-signal strong {
animation: evidence-confirm 560ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes result-frame {
0% {
opacity: 0;
transform: scale(0.996);
}
28% {
opacity: 0.78;
}
100% {
opacity: 0;
transform: scale(1);
}
}
@keyframes evidence-confirm {
0% {
color: var(--sync-result);
}
100% {
color: var(--instrument-text);
}
}
.hero-primary {
position: relative;
z-index: 1;
min-height: 112px;
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 18px;
padding: 26px 30px 22px;
border-bottom: 1px solid var(--instrument-line);
}
.status-app-icon {
width: 42px;
height: 42px;
position: relative;
display: grid;
place-items: center;
border: 1px solid #36505f;
border-radius: 8px;
background: #f8fbfc;
}
.status-app-icon img {
width: 27px;
height: 27px;
}
.status-app-icon::after {
position: absolute;
right: -4px;
bottom: -4px;
width: 10px;
height: 10px;
border: 2px solid var(--instrument);
border-radius: 50%;
background: var(--instrument-green);
content: "";
}
.status-hero.attention .status-app-icon::after {
background: var(--instrument-amber);
}
.status-hero.error .status-app-icon::after {
background: var(--danger);
}
.status-copy {
min-width: 0;
}
.status-copy h2 {
margin: 0;
color: var(--instrument-text);
font-size: 25px;
font-weight: 700;
letter-spacing: -0.025em;
line-height: 1.2;
}
.status-copy p {
max-width: 68ch;
margin: 6px 0 0;
color: var(--instrument-muted);
font-size: 13px;
}
.signal-action {
min-height: 42px;
padding: 0 17px;
border-color: #416174;
background: #f2f7f9;
color: #0b2838;
box-shadow: 0 7px 18px rgba(0, 0, 0, 0.2);
}
.signal-action:hover:not(:disabled) {
border-color: #ffffff;
background: #ffffff;
}
.signal-action svg {
width: 17px;
height: 17px;
}
.status-topology {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(54px, 0.35fr) minmax(0, 1fr) minmax(54px, 0.35fr) minmax(0, 1fr);
align-items: center;
gap: 14px;
padding: 32px 34px 36px;
}
.route-node {
position: relative;
min-width: 0;
display: grid;
gap: 7px;
padding-top: 20px;
}
.route-node::before {
position: absolute;
top: 0;
left: 0;
width: 9px;
height: 9px;
border: 2px solid var(--instrument-blue);
border-radius: 50%;
background: var(--instrument);
box-shadow: 0 0 0 4px rgba(57, 160, 255, 0.1);
content: "";
}
.route-node small {
color: var(--instrument-muted);
font-size: 11px;
font-weight: 660;
letter-spacing: 0.055em;
}
.route-node strong {
overflow: hidden;
color: var(--instrument-text);
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 27px;
font-variant-numeric: tabular-nums;
font-weight: 620;
letter-spacing: -0.035em;
line-height: 1.05;
text-overflow: ellipsis;
white-space: nowrap;
}
.route-connector {
position: relative;
height: 1px;
margin-top: -22px;
overflow: visible;
background: var(--instrument-line);
}
.route-connector::after {
position: absolute;
top: -3px;
right: -1px;
width: 7px;
height: 7px;
border-top: 1px solid #5b7481;
border-right: 1px solid #5b7481;
content: "";
transform: rotate(45deg);
}
.status-hero.syncing .route-connector::before {
position: absolute;
top: -1px;
left: 0;
width: 100%;
height: 3px;
border-radius: 2px;
background: var(--instrument-blue);
box-shadow: 0 0 14px rgba(57, 160, 255, 0.62);
content: "";
transform: scaleX(0);
transform-origin: left center;
animation: route-trace 260ms cubic-bezier(0.16, 1, 0.3, 1) 110ms both;
}
.status-hero.syncing .route-connector:nth-of-type(2)::before {
animation-delay: 360ms;
}
.status-hero.syncing .route-node::before {
animation: node-confirm 180ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
.status-hero.syncing .route-node:nth-child(3)::before {
animation-delay: 250ms;
}
.status-hero.syncing .route-node:nth-child(5)::before {
animation-delay: 500ms;
}
@keyframes route-trace {
0% {
opacity: 0.35;
transform: scaleX(0);
}
100% {
opacity: 1;
transform: scaleX(1);
}
}
@keyframes node-confirm {
0% {
background: var(--instrument);
transform: scale(0.78);
}
58% {
background: var(--instrument-blue);
transform: scale(1.32);
}
100% {
background: var(--instrument-blue);
transform: scale(1);
}
}
.observability-rail {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(320px, 0.72fr);
border-top: 1px solid var(--instrument-line);
background: var(--instrument-raised);
}
.latest-signal,
.recovery-signal {
min-height: 78px;
padding: 17px 22px;
}
.latest-signal {
display: grid;
grid-template-columns: minmax(112px, auto) minmax(0, 1fr);
align-content: center;
column-gap: 18px;
}
.latest-signal > span {
grid-row: 1 / span 2;
align-self: center;
color: var(--instrument-muted);
font-size: 11px;
}
.latest-signal time {
display: block;
margin-top: 3px;
color: var(--instrument-text);
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 13px;
font-variant-numeric: tabular-nums;
}
.latest-signal strong,
.latest-signal small {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.latest-signal strong {
color: var(--instrument-text);
font-size: 13px;
}
.latest-signal small {
color: var(--instrument-muted);
font-size: 11px;
}
.recovery-signal {
display: grid;
grid-template-columns: 28px minmax(0, 1fr) 18px;
align-items: center;
gap: 12px;
border: 0;
border-left: 1px solid var(--instrument-line);
background: transparent;
color: var(--instrument-text);
cursor: pointer;
text-align: left;
transition: background-color 150ms ease;
}
.recovery-signal:hover {
background: rgba(255, 255, 255, 0.035);
}
.recovery-signal > svg:first-child {
width: 20px;
height: 20px;
color: var(--instrument-blue);
}
.recovery-signal.attention > svg:first-child {
color: var(--instrument-amber);
}
.recovery-signal span {
min-width: 0;
display: grid;
gap: 2px;
}
.recovery-signal small {
color: var(--instrument-muted);
font-size: 11px;
}
.recovery-signal strong {
overflow: hidden;
font-size: 12px;
text-overflow: ellipsis;
white-space: nowrap;
}
.signal-arrow {
width: 16px;
height: 16px;
color: var(--instrument-muted);
}
.first-run .status-copy h2 {
color: #ffffff;
}
.first-run .status-topology {
padding-top: 35px;
}
.first-run .route-node::before {
border-color: var(--instrument-amber);
box-shadow: 0 0 0 4px rgba(240, 179, 91, 0.1);
}
.first-run .route-node strong {
font-family: inherit;
font-size: 19px;
font-weight: 690;
letter-spacing: -0.015em;
}
.first-run .latest-signal {
grid-column: 1 / -1;
}
.dashboard-grid,
.ledger-grid {
display: grid;
overflow: hidden;
border: 1px solid var(--line);
border-radius: 10px;
margin-top: 24px;
background: var(--surface);
box-shadow: 0 8px 20px rgba(24, 48, 61, 0.07);
}
.dashboard-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ledger-grid {
grid-template-columns: minmax(0, 1.15fr) minmax(380px, 0.85fr);
margin-top: 18px;
}
.settings-section {
min-width: 0;
}
.settings-section + .settings-section {
border-left: 1px solid var(--line);
}
.section-heading {
min-height: 62px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
padding: 13px 18px;
border-bottom: 1px solid var(--line);
background: var(--surface-muted);
}
.section-heading > div:first-child {
min-width: 0;
display: flex;
align-items: baseline;
gap: 10px;
}
.section-heading h2 {
margin: 0;
color: var(--ink);
font-size: 14px;
font-weight: 710;
}
.section-heading > div:first-child > span {
color: var(--muted);
font-size: 11px;
white-space: nowrap;
}
.settings-section.data-updated .section-heading {
animation: data-confirm 640ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes data-confirm {
0% {
background: var(--surface-muted);
}
24% {
background: var(--accent-soft);
}
100% {
background: var(--surface-muted);
}
}
.settings-group {
min-width: 0;
}
.settings-row,
.record-row {
min-height: 68px;
display: grid;
align-items: center;
gap: 12px;
padding: 12px 17px;
border-bottom: 1px solid var(--line);
}
.settings-row:last-child,
.record-row:last-child {
border-bottom: 0;
}
.settings-row {
grid-template-columns: 34px minmax(0, 1fr) minmax(120px, auto) auto;
}
.record-row {
grid-template-columns: 44px minmax(0, 1fr) minmax(120px, auto) auto;
}
.setting-icon,
.record-type {
height: 30px;
display: grid;
place-items: center;
border: 1px solid var(--line);
border-radius: 5px;
background: var(--surface-muted);
color: var(--accent);
font-size: 9px;
font-weight: 760;
letter-spacing: 0.03em;
}
.setting-icon {
width: 30px;
}
.setting-icon svg {
width: 16px;
height: 16px;
}
.setting-icon.violet {
color: #7454c6;
}
.dark .setting-icon.violet {
color: #b7a0ff;
}
.record-type {
width: 44px;
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}
.setting-copy {
min-width: 0;
display: grid;
gap: 3px;
}
.setting-copy strong {
overflow: hidden;
color: var(--ink);
font-size: 13px;
font-weight: 660;
text-overflow: ellipsis;
white-space: nowrap;
}
.setting-copy small {
overflow: hidden;
color: var(--muted);
font-size: 11px;
text-overflow: ellipsis;
white-space: nowrap;
}
.settings-row code,
.record-row code {
min-width: 0;
overflow: hidden;
color: var(--ink-soft);
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 11px;
font-variant-numeric: tabular-nums;
text-align: right;
text-overflow: ellipsis;
white-space: nowrap;
}
.native-empty {
min-height: 112px;
display: grid;
place-content: center;
gap: 4px;
padding: 24px;
color: var(--muted);
text-align: center;
}
.native-empty strong {
color: var(--ink-soft);
font-size: 13px;
font-weight: 650;
}
.native-empty span,
.native-empty small {
color: var(--muted);
font-size: 11px;
}
.records-heading,
.activity-heading {
flex-wrap: wrap;
}
.search-field {
width: 210px;
height: 34px;
display: grid;
grid-template-columns: 16px minmax(0, 1fr);
align-items: center;
gap: 7px;
padding: 0 10px;
border: 1px solid var(--line);
border-radius: 5px;
background: var(--surface);
color: var(--muted);
}
.search-field svg {
width: 15px;
height: 15px;
}
.search-field input {
width: 100%;
min-width: 0;
padding: 0;
border: 0;
outline: 0;
background: transparent;
color: var(--ink);
font-size: 12px;
}
.search-field input::placeholder {
color: var(--faint);
}
.filter-tabs {
display: inline-flex;
align-items: center;
gap: 3px;
padding: 2px;
border: 1px solid var(--line);
border-radius: 5px;
background: var(--surface);
}
.filter-tabs button {
min-height: 27px;
padding: 0 9px;
border: 0;
border-radius: 3px;
background: transparent;
color: var(--muted);
font-size: 11px;
cursor: pointer;
}
.filter-tabs button.active {
background: var(--surface-strong);
color: var(--ink);
}
.activity-ledger {
height: 100%;
}
.event-stream {
min-height: 100%;
padding: 0;
margin: 0;
list-style: none;
}
.event-stream li {
min-height: 68px;
display: grid;
grid-template-columns: 52px 58px 72px minmax(0, 1fr);
align-items: center;
gap: 10px;
padding: 12px 17px;
border-bottom: 1px solid var(--line);
}
.event-stream li:last-child {
border-bottom: 0;
}
.event-stream li > time {
color: var(--muted);
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 10px;
font-variant-numeric: tabular-nums;
}
.event-badge {
color: var(--success);
font-size: 10px;
font-weight: 700;
}
.event-badge.warn {
color: var(--warning);
}
.event-source {
overflow: hidden;
color: var(--muted);
font-size: 10px;
text-overflow: ellipsis;
white-space: nowrap;
}
.event-stream li > div {
min-width: 0;
display: grid;
gap: 2px;
}
.event-stream li > div strong,
.event-stream li > div small {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.event-stream li > div strong {
color: var(--ink);
font-size: 12px;
font-weight: 650;
}
.event-stream li > div small {
color: var(--muted);
font-size: 10px;
}
.event-stream .native-empty {
display: grid;
grid-template-columns: 1fr;
place-content: center;
}
.setup-brief {
display: grid;
grid-template-columns: minmax(250px, 0.9fr) minmax(420px, 1.5fr) minmax(210px, 0.75fr);
align-items: stretch;
overflow: hidden;
border: 1px solid var(--line);
border-radius: 10px;
margin-bottom: 28px;
background: var(--surface);
box-shadow: 0 12px 28px rgba(24, 48, 61, 0.09);
}
.setup-copy,
.setup-target {
padding: 25px 24px;
}
.setup-copy {
background: var(--instrument);
color: var(--instrument-text);
}
.setup-copy h2 {
margin: 0;
color: var(--instrument-text);
font-size: 23px;
font-weight: 710;
letter-spacing: -0.025em;
}
.setup-copy p {
max-width: 42ch;
margin: 8px 0 0;
color: var(--instrument-muted);
font-size: 12px;
}
.setup-sequence {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
padding: 0;
margin: 0;
list-style: none;
}
.setup-sequence li {
min-width: 0;
display: grid;
align-content: center;
gap: 3px;
padding: 20px;
border-right: 1px solid var(--line);
}
.setup-sequence li:last-child {
border-right: 0;
}
.setup-sequence li > span {
width: 25px;
height: 25px;
display: grid;
place-items: center;
border: 1px solid var(--line-strong);
border-radius: 50%;
margin-bottom: 7px;
color: var(--accent);
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 11px;
font-weight: 700;
}
.setup-sequence strong {
color: var(--ink);
font-size: 12px;
}
.setup-sequence small {
color: var(--muted);
font-size: 10px;
}
.setup-target {
display: grid;
align-content: center;
gap: 3px;
border-left: 1px solid var(--line);
background: var(--surface-muted);
}
.setup-target > span,
.setup-target small {
color: var(--muted);
font-size: 10px;
}
.setup-target code {
overflow: hidden;
color: var(--ink);
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 12px;
text-overflow: ellipsis;
white-space: nowrap;
}
.config-view {
margin-top: 52px;
}
.first-run .config-view {
margin-top: 0;
}
.config-shell {
display: block;
}
.config-shell > summary {
list-style: none;
}
.config-shell > summary::-webkit-details-marker {
display: none;
}
.config-summary {
min-height: 82px;
display: grid;
grid-template-columns: 42px minmax(0, 1fr) auto;
align-items: center;
gap: 14px;
padding: 15px 18px;
border: 1px solid var(--line);
border-radius: 10px;
background: var(--surface);
box-shadow: 0 10px 24px rgba(24, 48, 61, 0.07);
cursor: pointer;
transition:
border-color 160ms ease-out,
background 160ms ease-out,
box-shadow 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
.config-summary:hover {
border-color: var(--line-strong);
background: var(--surface-muted);
box-shadow: 0 14px 30px rgba(24, 48, 61, 0.1);
}
.config-shell[open] > .config-summary {
margin-bottom: 24px;
background: var(--surface-muted);
}
.first-run .config-shell[open] > .config-summary {
display: none;
}
.config-summary-mark {
width: 42px;
height: 42px;
display: grid;
place-items: center;
border: 1px solid var(--line-strong);
border-radius: 7px;
background: var(--accent-soft);
color: var(--accent);
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 9px;
font-weight: 760;
letter-spacing: 0.04em;
}
.config-summary-copy {
min-width: 0;
display: grid;
gap: 3px;
}
.config-summary-copy h2,
.config-summary-copy p {
overflow: hidden;
margin: 0;
text-overflow: ellipsis;
white-space: nowrap;
}
.config-summary-copy h2 {
color: var(--ink);
font-size: 14px;
font-weight: 710;
letter-spacing: -0.01em;
}
.config-summary-copy p {
color: var(--muted);
font-size: 11px;
}
.config-summary-meta,
.config-summary-action,
.config-summary-status {
display: flex;
align-items: center;
}
.config-summary-meta {
justify-content: flex-end;
gap: 22px;
}
.config-summary-status {
gap: 7px;
color: var(--muted);
font-size: 11px;
font-weight: 650;
white-space: nowrap;
}
.config-summary-status i {
width: 6px;
height: 6px;
border-radius: 50%;
background: currentColor;
}
.config-summary-status.success {
color: var(--success);
}
.config-summary-status.attention {
color: var(--warning);
}
.config-summary-status.error {
color: var(--danger);
}
.config-summary-action {
min-width: 100px;
justify-content: flex-end;
gap: 8px;
color: var(--accent);
font-size: 11px;
font-weight: 680;
white-space: nowrap;
}
.config-summary-action svg {
width: 15px;
height: 15px;
transition: transform 180ms cubic-bezier(0.16, 1, 0.3, 1);
}
.config-summary-action .when-open {
display: none;
}
.config-shell[open] .config-summary-action .when-closed {
display: none;
}
.config-shell[open] .config-summary-action .when-open {
display: inline;
}
.config-shell[open] .config-summary-action svg {
transform: rotate(90deg);
}
.config-shell[open] > .config-body {
animation: config-body-reveal 260ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes config-body-reveal {
from {
opacity: 0.72;
transform: translateY(-8px);
clip-path: inset(0 0 6% 0);
}
to {
opacity: 1;
transform: translateY(0);
clip-path: inset(0);
}
}
.config-heading {
align-items: center;
}
.page-actions {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 8px;
}
.save-state {
margin-right: 8px;
color: var(--success);
}
.config-editor {
overflow: hidden;
border: 1px solid var(--line);
border-radius: 10px;
background: var(--surface);
box-shadow: 0 12px 28px rgba(24, 48, 61, 0.08);
}
.editor-title {
min-height: 76px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
padding: 14px 18px;
border-bottom: 1px solid var(--line);
background: var(--surface-muted);
}
.profile-picker {
min-width: 0;
display: flex;
align-items: center;
gap: 11px;
}
.profile-picker > span:last-child {
min-width: 0;
display: grid;
gap: 4px;
}
.profile-picker small {
overflow: hidden;
color: var(--muted);
font-size: 10px;
text-overflow: ellipsis;
white-space: nowrap;
}
.profile-picker select {
width: auto;
min-width: 210px;
max-width: 420px;
padding: 0;
border: 0;
outline: 0;
background: transparent;
color: var(--ink);
font-size: 13px;
font-weight: 680;
}
.provider-logo {
width: 38px;
height: 38px;
display: grid;
place-items: center;
flex: 0 0 auto;
border: 1px solid var(--line-strong);
border-radius: 6px;
background: var(--surface);
color: var(--accent);
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 9px;
font-weight: 760;
letter-spacing: 0.02em;
}
.editor-tools {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 4px;
}
.studio-link {
margin-right: 5px;
}
.config-notice {
padding: 12px 18px;
border-bottom: 1px solid var(--line);
background: var(--warning-soft);
color: var(--warning);
font-size: 12px;
}
.config-notice.error {
background: var(--danger-soft);
color: var(--danger);
}
.config-pane {
border-bottom: 1px solid var(--line);
}
.config-pane:last-of-type {
border-bottom: 0;
}
.config-pane:not([open]) > :not(summary) {
display: none;
}
.section-title {
min-height: 80px;
display: grid;
grid-template-columns: minmax(210px, 0.55fr) minmax(0, 1fr) 18px;
align-items: center;
gap: 28px;
padding: 18px 28px;
list-style: none;
cursor: default;
}
.section-title::-webkit-details-marker {
display: none;
}
.section-title > div {
min-width: 0;
display: contents;
}
.section-title h3 {
margin: 0;
color: var(--ink);
font-size: 14px;
font-weight: 710;
}
.section-title p {
max-width: 72ch;
margin: 0;
color: var(--muted);
font-size: 11px;
}
.pane-chevron {
display: none !important;
width: 15px;
height: 15px;
color: var(--muted);
transition: transform 160ms ease;
}
.pane-content {
padding: 0 28px 30px;
}
.form-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 18px 22px;
}
.field {
min-width: 0;
display: grid;
align-content: start;
gap: 7px;
}
.field > span {
color: var(--ink-soft);
font-size: 11px;
font-weight: 650;
}
.field > span small {
margin-left: 5px;
color: var(--muted);
font-size: 10px;
font-weight: 450;
}
.field input,
.field select,
.field textarea,
.add-domain input {
width: 100%;
min-width: 0;
border: 1px solid var(--line);
border-radius: 5px;
background: var(--surface);
color: var(--ink);
transition:
border-color 150ms ease,
background-color 150ms ease,
box-shadow 150ms ease;
}
.field input,
.field select,
.add-domain input {
min-height: 40px;
padding: 0 11px;
}
.field textarea {
padding: 12px;
}
.field .source-field {
min-height: 64px;
resize: vertical;
}
.field input:hover,
.field select:hover,
.field textarea:hover,
.add-domain input:hover {
border-color: var(--line-strong);
}
.field input:focus,
.field select:focus,
.field textarea:focus,
.add-domain input:focus {
border-color: var(--accent);
outline: 0;
box-shadow: 0 0 0 3px rgba(10, 115, 197, 0.11);
}
.field input::placeholder,
.field textarea::placeholder,
.add-domain input::placeholder {
color: var(--faint);
opacity: 1;
}
.field input:disabled,
.field select:disabled,
.field textarea:disabled {
cursor: not-allowed;
opacity: 0.56;
}
.domain-columns {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
}
.domain-section {
min-width: 0;
padding: 20px 0;
}
.domain-section:first-child {
padding-right: 24px;
border-right: 1px solid var(--line);
}
.domain-section:last-child {
padding-left: 24px;
}
.domain-heading {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 14px;
}
.domain-heading > div {
min-width: 0;
display: grid;
gap: 2px;
}
.domain-heading strong {
color: var(--ink);
font-size: 12px;
}
.domain-heading small {
color: var(--muted);
font-size: 10px;
}
.protocol {
min-width: 44px;
height: 27px;
display: grid;
place-items: center;
border: 1px solid var(--line-strong);
border-radius: 4px;
color: var(--accent);
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 10px;
font-weight: 740;
}
.protocol.ipv6 {
color: #7454c6;
}
.dark .protocol.ipv6 {
color: #b7a0ff;
}
.domain-list {
min-height: 34px;
display: flex;
flex-wrap: wrap;
align-content: flex-start;
gap: 6px;
margin-bottom: 10px;
}
.domain-list > span {
min-height: 30px;
display: inline-flex;
align-items: center;
gap: 6px;
padding: 4px 6px 4px 9px;
border: 1px solid var(--line);
border-radius: 4px;
background: var(--surface-muted);
color: var(--ink);
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 10px;
}
.domain-list > span button {
width: 21px;
height: 21px;
display: grid;
place-items: center;
padding: 0;
border: 0;
border-radius: 3px;
background: transparent;
color: var(--muted);
cursor: pointer;
}
.domain-list > span button:hover {
background: var(--danger-soft);
color: var(--danger);
}
.domain-empty {
align-self: center;
color: var(--muted);
font-size: 10px;
}
.add-domain {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
}
.add-domain input {
border-radius: 5px 0 0 5px;
}
.add-domain button {
min-width: 62px;
padding: 0 12px;
border: 1px solid var(--line);
border-left: 0;
border-radius: 0 5px 5px 0;
background: var(--surface-muted);
color: var(--ink);
font-size: 11px;
font-weight: 650;
cursor: pointer;
}
.add-domain button:hover {
background: var(--surface-strong);
}
.setting-pair {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
margin-top: 24px;
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
}
.setting {
min-height: 88px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 18px;
padding: 17px 0;
}
.setting:first-child {
padding-right: 24px;
border-right: 1px solid var(--line);
}
.setting:last-child {
padding-left: 24px;
}
.setting > div {
min-width: 0;
}
.setting strong {
color: var(--ink);
font-size: 12px;
}
.setting p {
max-width: 46ch;
margin: 4px 0 0;
color: var(--muted);
font-size: 10px;
}
.switch {
display: inline-flex;
align-items: center;
gap: 8px;
cursor: pointer;
}
.switch input {
position: absolute;
opacity: 0;
pointer-events: none;
}
.switch-track {
width: 34px;
height: 19px;
position: relative;
flex: 0 0 auto;
border: 1px solid var(--line-strong);
border-radius: 10px;
background: var(--surface-strong);
transition:
border-color 150ms ease,
background-color 150ms ease;
}
.switch-track::after {
position: absolute;
top: 2px;
left: 2px;
width: 13px;
height: 13px;
border-radius: 50%;
background: var(--surface);
box-shadow: 0 2px 5px rgba(15, 36, 48, 0.24);
content: "";
transition: transform 170ms cubic-bezier(0.2, 0.7, 0.2, 1);
}
.switch input:checked + .switch-track {
border-color: var(--accent);
background: var(--accent);
}
.switch input:checked + .switch-track::after {
transform: translateX(15px);
}
.switch input:focus-visible + .switch-track {
outline: 3px solid rgba(10, 115, 197, 0.24);
outline-offset: 2px;
}
.switch-label {
min-width: 26px;
color: var(--muted);
font-size: 10px;
}
.advanced-group {
margin-top: 22px;
border-top: 1px solid var(--line);
}
.advanced-group > summary {
min-height: 54px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 14px;
padding: 0;
list-style: none;
color: var(--ink);
cursor: pointer;
}
.advanced-group > summary::-webkit-details-marker {
display: none;
}
.advanced-group > summary > span {
display: flex;
align-items: baseline;
gap: 8px;
}
.advanced-group > summary strong {
font-size: 11px;
}
.advanced-group > summary small {
color: var(--muted);
font-size: 10px;
}
.advanced-group > summary svg {
width: 14px;
height: 14px;
color: var(--muted);
transition: transform 150ms ease;
}
.advanced-group[open] > summary svg {
transform: rotate(90deg);
}
.advanced-content {
padding: 5px 0 20px;
}
.advanced-hint {
margin: 0 0 12px;
color: var(--muted);
font-size: 10px;
}
.automation-card {
min-height: 76px;
display: grid;
grid-template-columns: 32px minmax(0, 1fr) minmax(150px, 0.34fr) auto;
align-items: center;
gap: 14px;
padding: 14px 0;
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
}
.automation-icon {
width: 30px;
height: 30px;
display: grid;
place-items: center;
color: var(--accent);
}
.automation-card.attention .automation-icon,
.automation-card.attention > div strong {
color: var(--warning);
}
.automation-icon svg {
width: 19px;
height: 19px;
}
.automation-card > div {
min-width: 0;
display: grid;
gap: 2px;
}
.automation-card > div strong {
color: var(--ink);
font-size: 12px;
}
.automation-card > div p {
overflow: hidden;
margin: 0;
color: var(--muted);
font-size: 10px;
text-overflow: ellipsis;
white-space: nowrap;
}
.compact-field {
grid-template-columns: minmax(0, 1fr);
}
.compact-field input {
min-height: 36px;
}
.json-editor {
min-height: 340px;
resize: vertical;
background: var(--instrument) !important;
color: var(--instrument-text) !important;
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace !important;
font-size: 12px;
line-height: 1.6;
tab-size: 2;
}
.inline-actions {
display: flex;
justify-content: flex-end;
gap: 8px;
margin-top: 10px;
}
.editor-footer {
min-height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
padding: 13px 18px;
border-top: 1px solid var(--line);
background: var(--surface-muted);
color: var(--muted);
font-size: 11px;
}
.editor-footer > div {
display: flex;
align-items: center;
gap: 8px;
}
.editor-footer .dirty {
color: var(--warning);
}
.save-state.confirmed i {
animation: state-confirm 480ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes state-confirm {
0% {
opacity: 0.45;
transform: scale(0.72);
}
52% {
opacity: 1;
transform: scale(1.5);
}
100% {
opacity: 1;
transform: scale(1);
}
}
.toast {
position: fixed;
right: 22px;
bottom: 22px;
z-index: 100;
max-width: min(390px, calc(100vw - 44px));
padding: 12px 15px;
border: 1px solid #29404d;
border-radius: 7px;
background: #08151e;
color: #eff6f8;
box-shadow: 0 15px 34px rgba(3, 12, 18, 0.34);
font-size: 12px;
opacity: 0;
transform: translateY(8px) scale(0.985);
transition:
opacity 160ms ease-out,
transform 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
.toast.visible {
opacity: 1;
transform: translateY(0) scale(1);
}
.toast.warning {
border-color: #83591f;
color: #f5cf92;
}
.toast.error {
border-color: #8c3344;
color: #ffadb9;
}
.portal.busy {
cursor: progress;
}
.portal.busy button,
.portal.busy input,
.portal.busy select,
.portal.busy textarea {
cursor: progress;
}
.spinning {
animation: spin 850ms linear infinite;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
@media (max-width: 1040px) {
.status-topology {
grid-template-columns: minmax(0, 1fr) 46px minmax(0, 1fr) 46px minmax(0, 1fr);
gap: 10px;
}
.ledger-grid {
grid-template-columns: 1fr;
}
.ledger-grid .settings-section + .settings-section {
border-top: 1px solid var(--line);
border-left: 0;
}
.setup-brief {
grid-template-columns: minmax(230px, 0.8fr) minmax(0, 1.4fr);
}
.setup-target {
grid-column: 1 / -1;
border-top: 1px solid var(--line);
border-left: 0;
}
}
@media (max-width: 800px) {
.app-header-inner {
width: min(calc(100% - 28px), 1240px);
grid-template-columns: minmax(130px, 1fr) auto minmax(112px, 1fr);
gap: 14px;
}
.content {
width: min(calc(100% - 28px), 1240px);
padding-top: 28px;
}
.config-summary-meta {
gap: 12px;
}
.config-summary-action {
min-width: 0;
}
.hero-primary {
grid-template-columns: auto minmax(0, 1fr);
}
.signal-action {
grid-column: 1 / -1;
width: 100%;
}
.observability-rail {
grid-template-columns: 1fr;
}
.recovery-signal {
border-top: 1px solid var(--instrument-line);
border-left: 0;
}
.dashboard-grid {
grid-template-columns: 1fr;
}
.dashboard-grid .settings-section + .settings-section {
border-top: 1px solid var(--line);
border-left: 0;
}
.setup-brief {
grid-template-columns: 1fr;
}
.setup-sequence {
grid-column: 1;
}
.setup-target {
grid-column: 1;
}
.config-heading {
align-items: flex-start;
flex-direction: column;
}
.page-actions {
width: 100%;
justify-content: flex-start;
flex-wrap: wrap;
}
.editor-title {
align-items: flex-start;
flex-direction: column;
}
.editor-tools {
width: 100%;
justify-content: flex-start;
flex-wrap: wrap;
}
.studio-link {
margin-right: auto;
}
.form-grid,
.domain-columns,
.setting-pair {
grid-template-columns: 1fr;
}
.domain-section:first-child,
.setting:first-child {
padding-right: 0;
border-right: 0;
}
.domain-section:last-child,
.setting:last-child {
padding-left: 0;
border-top: 1px solid var(--line);
}
.automation-card {
grid-template-columns: 32px minmax(0, 1fr) auto;
}
.automation-card .compact-field {
grid-column: 2 / 3;
}
.automation-card > .button {
grid-column: 3;
grid-row: 1 / span 2;
}
}
@media (max-width: 720px) {
.app-header-inner {
min-height: 58px;
}
.brand small {
display: none;
}
.command-nav {
--nav-gap: 15px;
}
.header-health > span {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
}
.header-health {
width: 20px;
justify-content: center;
}
.content {
padding-top: 22px;
}
.config-summary {
min-height: 72px;
grid-template-columns: 36px minmax(0, 1fr);
grid-template-rows: auto auto;
gap: 10px;
padding: 12px 14px;
}
.config-summary-mark {
width: 36px;
height: 36px;
grid-row: 1 / span 2;
}
.config-summary-meta {
grid-column: 2;
grid-row: 2;
justify-content: space-between;
gap: 10px;
}
.config-summary-action .when-closed,
.config-summary-action .when-open {
display: none !important;
}
.overview-view,
.config-view {
scroll-margin-top: 72px;
}
.page-header {
margin-bottom: 16px;
}
.page-header h1,
.page-header h2 {
font-size: 20px;
}
.hero-primary {
padding: 22px 20px 20px;
}
.status-copy h2 {
font-size: 21px;
}
.status-topology {
grid-template-columns: 1fr;
gap: 0;
padding: 24px 20px 26px;
}
.route-node {
grid-template-columns: 1fr;
align-items: start;
gap: 3px;
padding: 9px 0 9px 23px;
}
.route-node::before {
top: 15px;
left: 0;
}
.route-node strong {
font-size: 18px;
text-align: left;
}
.route-connector {
width: 1px;
height: 24px;
margin: 0 0 0 4px;
}
.route-connector::after {
top: auto;
right: auto;
bottom: 0;
left: -3px;
transform: rotate(135deg);
}
.status-hero.syncing .route-connector::before {
top: 0;
left: -1px;
width: 3px;
height: 100%;
transform: scaleY(0);
transform-origin: center top;
animation-name: route-trace-vertical;
}
@keyframes route-trace-vertical {
0% {
opacity: 0.35;
transform: scaleY(0);
}
100% {
opacity: 1;
transform: scaleY(1);
}
}
.latest-signal {
grid-template-columns: 92px minmax(0, 1fr);
padding: 15px 18px;
}
.recovery-signal {
padding: 15px 18px;
}
.settings-row {
grid-template-columns: 34px minmax(0, 1fr) auto;
}
.record-row {
grid-template-columns: 44px minmax(0, 1fr) auto;
}
.settings-row code,
.record-row code {
grid-column: 2 / -1;
grid-row: 2;
text-align: left;
}
.setup-sequence {
grid-template-columns: 1fr;
}
.setup-sequence li {
grid-template-columns: 30px minmax(0, 1fr);
align-items: center;
column-gap: 10px;
padding: 14px 20px;
border-right: 0;
border-bottom: 1px solid var(--line);
}
.setup-sequence li > span {
grid-row: 1 / span 2;
margin: 0;
}
.setup-sequence li:last-child {
border-bottom: 0;
}
.config-view {
margin-top: 58px;
}
.first-run .config-view {
margin-top: 0;
}
.config-editor {
border-radius: 8px;
}
.editor-title {
padding: 14px;
}
.profile-picker {
width: 100%;
}
.profile-picker > span:last-child {
flex: 1;
}
.profile-picker select {
width: 100%;
min-width: 0;
max-width: none;
}
.config-notice {
padding: 11px 14px;
}
.section-title {
min-height: 76px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 15px;
padding: 17px 18px;
cursor: pointer;
}
.section-title > div {
min-width: 0;
display: grid;
gap: 4px;
}
.section-title p {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.pane-chevron {
display: block !important;
flex: 0 0 auto;
}
.config-pane[open] .pane-chevron {
transform: rotate(90deg);
}
.pane-content {
padding: 0 18px 24px;
}
.automation-card {
grid-template-columns: 30px minmax(0, 1fr);
}
.automation-card .compact-field,
.automation-card > .button {
grid-column: 1 / -1;
grid-row: auto;
}
.editor-footer {
align-items: flex-start;
flex-direction: column;
padding: 14px;
}
.editor-footer > div {
width: 100%;
justify-content: flex-end;
}
}
@media (max-width: 480px) {
.app-header-inner {
width: min(calc(100% - 22px), 1240px);
grid-template-columns: auto 1fr auto;
gap: 10px;
}
.brand > span:last-child {
display: none;
}
.command-nav {
justify-self: center;
}
.content {
width: min(calc(100% - 22px), 1240px);
padding-bottom: 64px;
}
.status-hero {
border-radius: 9px;
}
.hero-primary {
grid-template-columns: 1fr;
}
.status-app-icon {
width: 38px;
height: 38px;
}
.signal-action {
grid-column: 1;
}
.latest-signal {
grid-template-columns: 1fr;
gap: 3px;
}
.latest-signal > span {
grid-row: auto;
}
.latest-signal time {
display: inline;
margin-left: 5px;
}
.section-heading {
align-items: flex-start;
flex-direction: column;
}
.search-field {
width: 100%;
}
.settings-row,
.record-row {
grid-template-columns: 34px minmax(0, 1fr);
}
.record-row {
grid-template-columns: 44px minmax(0, 1fr);
}
.settings-row .connected-state,
.record-row .connected-state {
grid-column: 2;
}
.event-stream li {
grid-template-columns: 48px 54px minmax(0, 1fr);
padding-right: 12px;
padding-left: 12px;
}
.event-source {
display: none;
}
.page-actions {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.save-state {
grid-column: 1 / -1;
}
.editor-tools {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.studio-link {
grid-column: 1 / -1;
justify-content: flex-start;
margin: 0;
}
.inline-actions,
.editor-footer > div {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.toast {
right: 12px;
bottom: 12px;
left: 12px;
max-width: none;
}
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
scroll-behavior: auto !important;
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}