@font-face {
font-family: "IBM Plex Sans";
src: url("fonts/IBMPlexSans-Regular.woff2") format("woff2");
font-weight: 400;
font-display: swap;
}
@font-face {
font-family: "IBM Plex Sans";
src: url("fonts/IBMPlexSans-Medium.woff2") format("woff2");
font-weight: 500;
font-display: swap;
}
@font-face {
font-family: "IBM Plex Sans";
src: url("fonts/IBMPlexSans-SemiBold.woff2") format("woff2");
font-weight: 600;
font-display: swap;
}
@font-face {
font-family: "IBM Plex Mono";
src: url("fonts/IBMPlexMono-Regular.woff2") format("woff2");
font-weight: 400;
font-display: swap;
}
@font-face {
font-family: "IBM Plex Mono";
src: url("fonts/IBMPlexMono-Medium.woff2") format("woff2");
font-weight: 500 600;
font-display: swap;
}
@font-face {
font-family: "Plex Sans Fallback";
src: local("Helvetica Neue"), local("Arial"), local("Liberation Sans");
size-adjust: 100.6%;
ascent-override: 103%;
descent-override: 27%;
line-gap-override: 0%;
}
@font-face {
font-family: "Plex Mono Fallback";
src: local("Menlo"), local("Consolas"), local("DejaVu Sans Mono");
size-adjust: 99.4%;
ascent-override: 103%;
descent-override: 27%;
line-gap-override: 0%;
}
:root {
--bg: #f4f6f8;
--panel: #ffffff;
--soft: #f8fafb;
--line: #dce3e8;
--line-soft: #e8edf1;
--ink: #1e2a35;
--ink-2: #3a4d5e;
--muted: #64778a;
--accent: #f0a43c;
--accent-ink: #1e2a35;
--accent-edge: #c97f14;
--blue: #4c7088;
--blue-soft: #e3ecf2;
--blue-ink: #2f4f68;
--green: #3e9a6e;
--green-soft: #eaf4ef;
--green-ink: #1f5c3e;
--green-edge: #8cc5a6;
--amber-soft: #fbebd2;
--amber-ink: #7a4e0a;
--amber-edge: #d9a75a;
--red: #b5483c;
--red-soft: #f8e7e4;
--chip: #eef2f5;
--code-bg: #1e2a35;
--code-ink: #dce5ec;
--code-dim: #7e8f9d;
--scrim: rgba(20, 28, 36, 0.38);
--shadow-pop: 0 12px 30px rgba(20, 28, 36, 0.18);
--shadow-modal: 0 18px 48px rgba(20, 28, 36, 0.28);
--sans: "IBM Plex Sans", "Plex Sans Fallback", "Helvetica Neue", Arial, sans-serif;
--mono: "IBM Plex Mono", "Plex Mono Fallback", ui-monospace, SFMono-Regular, Menlo, monospace;
color-scheme: light;
}
:root[data-theme="dark"] {
--bg: #0f151a;
--panel: #161f27;
--soft: #1b242c;
--line: #26333d;
--line-soft: #202b34;
--ink: #e7eef3;
--ink-2: #b7c6d1;
--muted: #8a9dab;
--accent-ink: #13202b;
--blue: #86aec7;
--blue-soft: #1c2b37;
--blue-ink: #a9c8db;
--green: #4fb185;
--green-soft: #16261f;
--green-ink: #7fcfa8;
--green-edge: #2e6b4d;
--amber-soft: #2e2310;
--amber-ink: #e9bc72;
--amber-edge: #8a6326;
--red: #e07a6e;
--red-soft: #2e1a17;
--chip: #212c35;
--code-bg: #0a1015;
--code-ink: #c8d6e0;
--scrim: rgba(0, 0, 0, 0.5);
--shadow-pop: 0 12px 30px rgba(0, 0, 0, 0.5);
--shadow-modal: 0 18px 48px rgba(0, 0, 0, 0.55);
color-scheme: dark;
}
* {
box-sizing: border-box;
}
[hidden] {
display: none !important;
}
html,
body {
margin: 0;
height: 100%;
}
p {
margin: 0;
}
body {
overflow-wrap: anywhere;
font-family: var(--sans);
font-size: 13.5px;
line-height: 1.45;
color: var(--ink);
background: var(--bg);
-webkit-font-smoothing: antialiased;
}
a,
.lnk {
color: var(--blue);
text-decoration: none;
cursor: pointer;
}
a:hover,
.lnk:hover {
color: var(--ink);
}
button,
input,
select,
textarea {
font: inherit;
color: inherit;
}
button {
cursor: pointer;
background: none;
border: 0;
padding: 0;
margin: 0;
text-align: inherit;
transition: color 140ms ease, background-color 140ms ease, border-color 140ms ease,
box-shadow 160ms ease, opacity 140ms ease, transform 120ms ease;
}
button:active:not(:disabled) {
transform: translateY(0.5px);
}
button:disabled {
cursor: default;
}
input,
textarea,
select {
transition: border-color 140ms ease, box-shadow 160ms ease, background-color 140ms ease;
}
input::placeholder,
textarea::placeholder {
color: var(--muted);
opacity: 1;
}
:focus-visible {
outline: 2px solid var(--blue);
outline-offset: 2px;
}
input:focus-visible,
textarea:focus-visible {
outline: none;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0 0 0 0);
white-space: nowrap;
border: 0;
}
.offscreen {
position: fixed;
left: -9999px;
top: 0;
}
svg.i {
flex-shrink: 0;
display: block;
}
@keyframes pulse {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0.3;
}
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
.mono {
font-family: var(--mono);
}
.muted {
color: var(--muted);
}
.ink2 {
color: var(--ink-2);
}
.grow {
flex-grow: 1;
min-width: 0;
}
.spacer {
flex-grow: 1;
}
.row {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
min-width: 0;
}
.row.nowrap {
flex-wrap: nowrap;
}
.row.base {
align-items: baseline;
}
.row.top {
align-items: flex-start;
}
.col {
display: flex;
flex-direction: column;
min-width: 0;
}
.gap2 {
gap: 2px;
}
.gap4 {
gap: 4px;
}
.gap6 {
gap: 6px;
}
.gap10 {
gap: 10px;
}
.gap12 {
gap: 12px;
}
.ell {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
min-width: 0;
}
.ell-start {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
direction: rtl;
text-align: left;
min-width: 0;
max-width: 100%;
}
.nowrap {
white-space: nowrap;
}
.right {
text-align: right;
}
.pretty {
text-wrap: pretty;
}
.anywhere {
overflow-wrap: anywhere;
}
.eyebrow {
font: 500 10.5px var(--mono);
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--muted);
}
.eyebrow.sm {
font-size: 10px;
}
.eyebrow.wide {
letter-spacing: 0.1em;
}
.t-mono-sm {
font: 11.5px var(--mono);
color: var(--muted);
}
.t-mono {
font: 12px var(--mono);
}
.t-sm {
font-size: 12.5px;
}
.t-xs {
font-size: 12px;
}
.t-b {
font-weight: 600;
}
.t-m {
font-weight: 500;
}
.stack {
display: flex;
flex-direction: column;
gap: 12px;
min-width: 0;
}
.q4 {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
}
.q3 {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.auto-fit {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(var(--min, 220px), 100%), 1fr));
gap: 12px;
}
.auto-fill {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(min(var(--min, 220px), 100%), 1fr));
}
.m150 {
--min: 150px;
}
.m170 {
--min: 170px;
}
.m180 {
--min: 180px;
}
.m190 {
--min: 190px;
}
.m200 {
--min: 200px;
}
.m230 {
--min: 230px;
}
.m240 {
--min: 240px;
}
.m300 {
--min: 300px;
}
.m320 {
--min: 320px;
}
.m340 {
--min: 340px;
}
.gap8 {
gap: 8px;
}
.split {
display: grid;
gap: 12px;
align-items: start;
}
.split.stretch {
align-items: stretch;
}
.split.s-175-1 {
grid-template-columns: minmax(0, 1.75fr) minmax(280px, 1fr);
}
.split.s-17-1 {
grid-template-columns: minmax(0, 1.7fr) minmax(260px, 1fr);
}
.split.s-15-1 {
grid-template-columns: minmax(0, 1.5fr) minmax(260px, 1fr);
}
.split.s-14-1 {
grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
}
.split.s-13-1 {
grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
}
.split.s-12-1 {
grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
}
.split.s-1-12 {
grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
}
.split.s-1-14 {
grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
}
.split.s-1-1 {
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
.split.s-14-1-1 {
grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr);
}
.split.s-260 {
grid-template-columns: 260px minmax(0, 1fr);
}
.split.s-200 {
grid-template-columns: 200px minmax(0, 1fr);
}
.span2 {
grid-row: span 2;
}
.full-row {
grid-column: 1 / -1;
}
.card {
background: var(--panel);
border: 1px solid var(--line);
border-radius: 8px;
overflow: hidden;
min-width: 0;
}
.card.visible {
overflow: visible;
}
.card.pad {
padding: 12px 14px;
display: flex;
flex-direction: column;
gap: 8px;
}
.card.pad16 {
padding: 16px;
display: flex;
flex-direction: column;
gap: 12px;
}
.card.flexcol {
display: flex;
flex-direction: column;
}
.card.accent-edge {
border: 1.5px solid var(--accent);
}
.card.blue-edge {
border: 1.5px solid var(--blue);
}
.card.red-edge {
border-color: var(--red);
}
.card.dashed {
border-style: dashed;
}
.card-h {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 14px;
border-bottom: 1px solid var(--line-soft);
flex-wrap: wrap;
min-height: 41px;
}
.card-h.amber {
background: var(--amber-soft);
}
.card-h.tight {
padding: 9px 12px;
}
.card-t {
font-weight: 600;
font-size: 13.5px;
}
.card-t.sm {
font-size: 13px;
}
.card-meta {
font: 11.5px var(--mono);
color: var(--muted);
}
.card-b {
padding: 12px 14px;
display: flex;
flex-direction: column;
gap: 10px;
}
.card-foot {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 14px;
background: var(--soft);
border-top: 1px solid var(--line-soft);
font: 11.5px var(--mono);
color: var(--muted);
flex-wrap: wrap;
}
.card-foot.sans {
font: 12.5px var(--sans);
}
.card-note {
padding: 9px 14px;
background: var(--soft);
color: var(--muted);
font-size: 12px;
text-wrap: pretty;
}
.line-row {
border-bottom: 1px solid var(--line-soft);
}
.line-row:last-child {
border-bottom: 0;
}
.blue-box {
background: var(--blue-soft);
border-radius: 8px;
padding: 12px 14px;
display: flex;
flex-direction: column;
gap: 4px;
}
.blue-box .eyebrow {
color: var(--blue-ink);
letter-spacing: 0.1em;
font-size: 10px;
}
.blue-box .txt {
font-size: 12.5px;
color: var(--ink-2);
text-wrap: pretty;
}
.page {
padding: 20px 24px 28px;
display: flex;
flex-direction: column;
gap: 12px;
min-width: 0;
}
.page.tight {
padding-top: 16px;
}
.head {
display: flex;
align-items: flex-end;
gap: 12px;
flex-wrap: wrap;
}
.head .titles {
flex-grow: 1;
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
}
.h1 {
font-size: 19px;
font-weight: 600;
}
.lead {
color: var(--muted);
font-size: 13.5px;
text-wrap: pretty;
}
.count-chip {
display: inline-flex;
align-items: center;
height: 22px;
padding: 0 9px;
border-radius: 11px;
border: 1px solid var(--line);
background: var(--panel);
font: 11.5px var(--mono);
color: var(--ink-2);
}
.kpi {
background: var(--panel);
border: 1px solid var(--line);
border-radius: 8px;
padding: 12px 14px;
display: flex;
flex-direction: column;
gap: 4px;
min-width: 0;
color: var(--ink);
}
button.kpi:hover,
a.kpi:hover {
border-color: var(--blue);
}
.kpi.warn {
border-color: var(--amber-edge);
background: var(--amber-soft);
}
.kpi .v {
font: 600 20px/1.2 var(--mono);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.kpi .s {
color: var(--muted);
font-size: 12px;
text-wrap: pretty;
}
.stat-inline {
display: flex;
flex-direction: column;
gap: 2px;
}
.stat-inline .v {
font: 600 19px var(--mono);
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 7px;
height: 32px;
padding: 0 13px;
border-radius: 6px;
font-weight: 500;
font-size: 13.5px;
white-space: nowrap;
border: 1px solid var(--line);
background: var(--panel);
color: var(--ink);
flex-shrink: 0;
}
.btn:hover:not(:disabled) {
border-color: var(--blue);
}
.btn.primary {
background: var(--accent);
border-color: var(--accent);
color: var(--accent-ink);
font-weight: 600;
}
.btn.primary:hover:not(:disabled) {
border-color: var(--accent-edge);
background: #f3b155;
}
.btn.dark {
background: var(--ink);
border-color: var(--ink);
color: var(--panel);
}
.btn.dark:hover:not(:disabled) {
border-color: var(--ink);
opacity: 0.88;
}
.btn.amber {
border-color: var(--amber-edge);
background: var(--amber-soft);
color: var(--amber-ink);
}
.btn.danger {
color: var(--red);
border-color: var(--red);
}
.btn.danger-soft {
color: var(--red);
}
.btn.ghost {
border-color: transparent;
background: transparent;
}
.btn.soft {
background: var(--soft);
}
.btn:disabled,
.btn.off {
background: var(--soft);
color: var(--muted);
border-color: var(--line-soft);
pointer-events: none;
}
.btn.lg {
height: 38px;
padding: 0 18px;
font-size: 14px;
border-radius: 7px;
}
.btn.md {
height: 34px;
padding: 0 15px;
}
.btn.sm {
height: 28px;
padding: 0 11px;
font-size: 13px;
}
.btn.xs {
height: 26px;
padding: 0 10px;
font-size: 12.5px;
border-radius: 5px;
}
.btn.xxs {
height: 24px;
padding: 0 9px;
font-size: 12px;
border-radius: 5px;
}
.btn.t125 {
font-size: 12.5px;
}
.btn.icon {
width: 28px;
height: 28px;
padding: 0;
}
.btn.icon32 {
width: 32px;
height: 32px;
padding: 0;
color: var(--ink-2);
}
.btn.wide {
width: 100%;
}
.x-btn {
display: inline-flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
border-radius: 6px;
color: var(--muted);
}
.x-btn:hover {
background: var(--soft);
color: var(--red);
}
.lnk {
font-size: 12.5px;
display: inline-flex;
align-items: center;
gap: 6px;
}
.lnk.muted {
color: var(--muted);
}
.lnk.strong {
font-weight: 500;
}
.lnk.amber {
color: var(--amber-ink);
}
.lnk.red {
color: var(--red);
}
.lnk.t13 {
font-size: 13px;
}
.pill {
display: inline-flex;
align-items: center;
gap: 6px;
height: 22px;
padding: 0 9px;
border-radius: 11px;
font: 11.5px var(--mono);
white-space: nowrap;
justify-self: start;
width: fit-content;
border: 1px solid var(--line);
background: var(--soft);
color: var(--ink-2);
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
.pill.green {
border-color: var(--green-edge);
background: var(--green-soft);
color: var(--green-ink);
}
.pill.amber {
border-color: var(--amber-edge);
background: var(--amber-soft);
color: var(--amber-ink);
}
.pill.blue {
border-color: var(--blue);
background: var(--blue-soft);
color: var(--blue-ink);
}
.pill.red {
border-color: var(--red);
background: var(--red-soft);
color: var(--red);
}
.pill.sm {
height: 20px;
font-size: 11px;
padding: 0 7px;
}
.dot {
width: 6px;
height: 6px;
border-radius: 50%;
flex-shrink: 0;
background: var(--muted);
display: inline-block;
}
.dot.green {
background: var(--green);
}
.dot.amber {
background: var(--accent-edge);
}
.dot.blue {
background: var(--blue);
}
.dot.red {
background: var(--red);
}
.dot.line {
background: var(--line);
}
.dot.pulse {
animation: pulse 1.6s ease-in-out infinite;
}
.dot.slow {
animation: pulse 2.4s ease-in-out infinite;
}
.dot.d7 {
width: 7px;
height: 7px;
}
.dot.d8 {
width: 8px;
height: 8px;
}
.dot.sq {
width: 8px;
height: 8px;
border-radius: 2px;
}
.tag {
display: inline-flex;
align-items: center;
height: 20px;
padding: 0 7px;
border-radius: 3px;
background: var(--chip);
font: 11px var(--mono);
color: var(--ink-2);
white-space: nowrap;
}
.tag.lg {
height: 22px;
padding: 0 8px;
border-radius: 4px;
font-size: 11.5px;
}
.tag .muted {
margin-left: 6px;
}
.badge {
display: inline-flex;
align-items: center;
height: 18px;
padding: 0 6px;
border-radius: 3px;
font: 10.5px var(--mono);
white-space: nowrap;
background: var(--chip);
color: var(--ink-2);
}
.badge.blue {
background: var(--blue-soft);
color: var(--blue-ink);
}
.badge.green {
background: var(--green-soft);
color: var(--green-ink);
}
.badge.amber {
background: var(--amber-soft);
color: var(--amber-ink);
}
.badge.red {
background: var(--red-soft);
color: var(--red);
}
.badge.outline {
background: transparent;
border: 1px solid var(--line);
}
.factchip {
display: inline-flex;
align-items: center;
height: 22px;
padding: 0 8px;
border-radius: 11px;
background: var(--blue-soft);
color: var(--blue-ink);
font: 11px var(--mono);
}
.factchip.sm {
height: 20px;
font-size: 10.5px;
padding: 0 7px;
border-radius: 10px;
}
.count {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 18px;
height: 18px;
padding: 0 5px;
border-radius: 9px;
background: var(--chip);
color: var(--muted);
font: 10.5px var(--mono);
}
.count.amber {
background: var(--amber-soft);
color: var(--amber-ink);
font-weight: 600;
}
.count.ink {
color: var(--ink-2);
}
.count.n20 {
min-width: 20px;
height: 18px;
font-size: 11px;
}
.check-ok {
display: inline-flex;
align-items: center;
justify-content: center;
width: 18px;
height: 18px;
border-radius: 50%;
background: var(--green-soft);
color: var(--green-ink);
flex-shrink: 0;
}
.check-pend {
display: inline-flex;
align-items: center;
justify-content: center;
width: 18px;
height: 18px;
border-radius: 50%;
background: var(--amber-soft);
}
.check-pend::after {
content: "";
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--accent-edge);
}
.check-bad {
display: inline-flex;
align-items: center;
justify-content: center;
width: 18px;
height: 18px;
border-radius: 50%;
background: var(--red-soft);
color: var(--red);
}
.spinner {
width: 14px;
height: 14px;
border-radius: 50%;
border: 2px solid var(--line);
border-top-color: var(--blue);
animation: spin 0.8s linear infinite;
flex-shrink: 0;
}
.seg {
display: inline-flex;
padding: 2px;
border-radius: 7px;
background: var(--chip);
gap: 2px;
align-self: flex-start;
flex-wrap: wrap;
max-width: 100%;
}
.seg.panel {
background: var(--panel);
border: 1px solid var(--line);
}
.seg.lg {
padding: 3px;
border-radius: 8px;
align-items: center;
}
.seg > button {
display: inline-flex;
align-items: center;
gap: 6px;
height: 26px;
padding: 0 11px;
border-radius: 5px;
font-size: 13px;
white-space: nowrap;
color: var(--muted);
}
.seg.lg > button {
height: 32px;
padding: 0 14px;
}
.seg > button:hover:not(:disabled) {
color: var(--ink);
}
.seg > button[aria-pressed="true"] {
background: var(--panel);
color: var(--ink);
font-weight: 500;
box-shadow: 0 1px 2px rgba(20, 28, 36, 0.12);
}
.seg.panel > button[aria-pressed="true"] {
background: var(--chip);
box-shadow: none;
}
.seg > button:disabled {
opacity: 0.45;
}
.seg > button .n {
font: 11px var(--mono);
color: var(--muted);
}
.seg.sm > button {
font-size: 12.5px;
}
.chip {
display: inline-flex;
align-items: center;
gap: 6px;
height: 28px;
padding: 0 11px;
border-radius: 14px;
font-size: 13px;
white-space: nowrap;
border: 1px solid var(--line);
background: var(--panel);
color: var(--ink-2);
}
.chip:hover {
border-color: var(--blue);
color: var(--ink);
}
.chip[aria-pressed="true"] {
border-color: var(--ink);
background: var(--ink);
color: var(--panel);
}
.chip.mono {
font: 12px var(--mono);
}
.chip.sm {
height: 26px;
padding: 0 10px;
border-radius: 13px;
}
.chip.xs {
height: 24px;
padding: 0 9px;
border-radius: 12px;
font: 12px var(--mono);
}
.chip.soft {
background: var(--soft);
}
.chip.dashed {
border-style: dashed;
color: var(--muted);
font: 12px var(--mono);
}
.dial {
display: inline-flex;
align-items: center;
gap: 6px;
height: 28px;
padding: 0 4px 0 10px;
border: 1px solid var(--line);
border-radius: 14px;
font: 12px var(--mono);
color: var(--ink);
background: var(--panel);
}
button.dial {
padding: 0 10px;
}
.dial .eyebrow {
font-size: 10px;
margin-right: 2px;
}
.dial .pm {
display: inline-flex;
width: 20px;
height: 20px;
align-items: center;
justify-content: center;
border-radius: 10px;
background: var(--soft);
color: var(--ink);
}
.dial > button[aria-pressed] {
height: 22px;
padding: 0 9px;
border-radius: 11px;
font-size: 12px;
color: var(--muted);
}
.dial > button[aria-pressed="true"] {
background: var(--ink);
color: var(--panel);
}
.tabs {
display: flex;
gap: 20px;
border-bottom: 1px solid var(--line);
overflow-x: auto;
overflow-y: hidden;
scrollbar-width: none;
}
.tabs::-webkit-scrollbar {
display: none;
}
.tabs.bare {
border-bottom: 0;
}
.tabs.in-card {
gap: 18px;
padding: 0 14px;
border-bottom: 1px solid var(--line-soft);
align-items: center;
flex-wrap: wrap;
overflow: visible;
}
.tabs.small {
gap: 16px;
}
.tabs > button.tab,
.tab {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 9px 0 8px;
font-size: 13.5px;
color: var(--muted);
border-bottom: 2px solid transparent;
margin-bottom: -1px;
white-space: nowrap;
flex-shrink: 0;
}
.tabs.small > button.tab {
font-size: 12.5px;
}
.tab:hover {
color: var(--ink);
}
.tabs > button.tab[aria-selected="true"],
.tab[aria-selected="true"] {
font-weight: 600;
color: var(--ink);
border-bottom-color: var(--accent);
}
.tg {
position: relative;
display: inline-block;
width: 30px;
height: 18px;
border-radius: 9px;
flex-shrink: 0;
background: var(--line);
transition: background 0.15s;
}
.tg::after {
content: "";
position: absolute;
top: 2px;
left: 2px;
width: 14px;
height: 14px;
border-radius: 50%;
background: #fff;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
transition: left 0.15s;
}
.on > .tg,
.tg.on {
background: var(--green);
}
.on > .tg::after,
.tg.on::after {
left: 14px;
}
.switch {
display: inline-flex;
align-items: center;
gap: 8px;
color: var(--ink);
font-size: 13px;
min-height: 28px;
}
.switch.t125 {
font-size: 12.5px;
}
.switch.strong {
font-weight: 500;
}
.switch:disabled {
opacity: 0.55;
}
.tg-row {
display: flex;
align-items: flex-start;
gap: 12px;
padding: 12px 14px;
border-radius: 8px;
color: var(--ink);
border: 1px solid var(--line);
background: var(--bg);
transition: background 0.15s, border-color 0.15s;
text-align: left;
width: 100%;
}
.tg-row .tg {
margin-top: 1px;
}
.tg-row.on {
border-color: var(--green);
background: var(--green-soft);
}
.tg-row .t {
font-weight: 500;
font-size: 13px;
}
.tg-row .t.big {
font-weight: 600;
font-size: 13.5px;
}
.tg-row .s {
color: var(--muted);
font-size: 12px;
text-wrap: pretty;
}
.tg-row:disabled {
opacity: 0.6;
}
.tg-plain {
display: flex;
align-items: flex-start;
gap: 12px;
padding: 6px 0;
color: var(--ink);
text-align: left;
width: 100%;
}
.tg-plain .t {
font-weight: 500;
font-size: 13px;
}
.tg-plain .s {
color: var(--muted);
font-size: 12px;
}
.cb {
display: inline-grid;
place-items: center;
padding: 0;
color: var(--panel);
width: 16px;
height: 16px;
border-radius: 4px;
flex-shrink: 0;
border: 1.5px solid var(--line);
background-color: var(--panel);
background-repeat: no-repeat;
background-position: center;
background-size: 11px 11px;
transition: background-color 0.12s, border-color 0.12s;
vertical-align: middle;
}
.cb[aria-checked="true"] {
border-color: var(--ink);
background-color: var(--ink);
}
.cb[aria-checked="mixed"] {
border-color: var(--ink);
background-color: var(--ink);
}
.cb[aria-checked="mixed"]::after {
content: "";
display: block;
width: 8px;
height: 2px;
border-radius: 1px;
background: var(--panel);
}
.radio {
width: 16px;
height: 16px;
border-radius: 50%;
border: 1.5px solid var(--line);
flex-shrink: 0;
background: var(--panel);
}
.on .radio,
.radio.on {
border: 4px solid var(--blue);
}
.inp {
height: 32px;
padding: 0 10px;
border: 1px solid var(--line);
border-radius: 6px;
background: var(--panel);
outline: none;
font-size: 13px;
min-width: 0;
}
.inp:focus {
border-color: var(--blue);
}
.inp.mono {
font: 13px var(--mono);
}
.inp.h34 {
height: 34px;
}
.box {
display: flex;
align-items: center;
gap: 8px;
height: 32px;
padding: 0 10px;
border: 1px solid var(--line);
border-radius: 6px;
background: var(--panel);
color: var(--muted);
min-width: 0;
}
.box:focus-within {
border-color: var(--blue);
}
.box.focus {
border: 1.5px solid var(--blue);
}
.box.h28 {
height: 28px;
padding: 0 9px;
}
.box.h34 {
height: 34px;
}
.box.h36 {
height: 36px;
padding: 0 12px;
}
.box.h38 {
height: 38px;
border-radius: 7px;
padding: 0 12px;
}
.box.w180 {
width: 180px;
}
.box.w220 {
width: 220px;
}
.box.w240 {
width: 240px;
}
.box.w260 {
width: 260px;
}
.box input {
border: 0;
outline: none;
background: transparent;
flex-grow: 1;
min-width: 0;
color: var(--ink);
font-size: 13px;
}
.box.h28 input {
font-size: 12.5px;
}
.box input.mono {
font: 12.5px var(--mono);
}
.box .lab {
font: 12px var(--mono);
color: var(--muted);
}
.sel {
height: 28px;
padding: 0 28px 0 10px;
border: 1px solid var(--line);
border-radius: 6px;
background-color: var(--panel);
font-size: 12.5px;
line-height: 26px;
color: var(--ink);
cursor: pointer;
background-image:
linear-gradient(45deg, transparent calc(50% - 0.8px), var(--muted) calc(50% - 0.8px), var(--muted) calc(50% + 0.8px), transparent calc(50% + 0.8px)),
linear-gradient(135deg, transparent calc(50% - 0.8px), var(--muted) calc(50% - 0.8px), var(--muted) calc(50% + 0.8px), transparent calc(50% + 0.8px));
background-repeat: no-repeat;
background-position: right 14px center, right 9px center;
background-size: 5px 5px, 5px 5px;
appearance: none;
-webkit-appearance: none;
outline: none;
max-width: 100%;
}
.sel:focus {
border-color: var(--blue);
}
.sel.mono {
font: 12px var(--mono);
height: 26px;
line-height: 24px;
border-radius: 5px;
padding: 0 26px 0 9px;
background-position: right 12px center, right 7px center;
}
.stepper {
display: flex;
align-items: center;
height: 32px;
border: 1px solid var(--line);
border-radius: 6px;
overflow: hidden;
}
.stepper button {
display: inline-flex;
align-items: center;
justify-content: center;
width: 32px;
height: 100%;
color: var(--ink);
background: var(--soft);
}
.stepper button[aria-disabled="true"],
.stepper button:disabled {
color: var(--muted);
}
.stepper .v {
flex-grow: 1;
text-align: center;
font: 500 13px var(--mono);
}
.field-l {
display: flex;
flex-direction: column;
gap: 6px;
}
.bar {
position: relative;
height: 6px;
border-radius: 3px;
background: var(--chip);
overflow: hidden;
min-width: 0;
}
.bar > i {
display: block;
height: 100%;
border-radius: inherit;
background: var(--blue);
width: 0;
transition: width 0.4s linear;
}
.bar.h4 {
height: 4px;
border-radius: 2px;
}
.bar.h5 {
height: 5px;
}
.bar.h8 {
height: 8px;
border-radius: 4px;
}
.bar.h10 {
height: 10px;
border-radius: 5px;
}
.bar.green > i {
background: var(--green);
}
.bar.accent > i {
background: var(--accent);
}
.bar.blueink > i {
background: var(--blue-ink);
}
.bar.amber > i {
background: var(--amber-edge);
}
.bar.red > i {
background: var(--red);
}
.bar.w120 {
width: 120px;
}
.bar.w46 {
width: 46px;
height: 4px;
background: var(--green-edge);
}
.segbar {
display: flex;
gap: 2px;
height: 10px;
border-radius: 5px;
overflow: hidden;
}
.segbar > i {
display: block;
min-width: 2px;
}
.legend {
display: flex;
gap: 12px;
flex-wrap: wrap;
font: 11.5px var(--mono);
}
.legend > span {
display: flex;
align-items: center;
gap: 6px;
}
.code {
position: relative;
background: var(--code-bg);
color: var(--code-ink);
border-radius: 7px;
padding: 12px 14px;
font: 12px/1.55 var(--mono);
white-space: pre;
overflow-x: auto;
margin: 0;
}
.code.flat {
border-radius: 0;
}
.code.wrap {
white-space: pre-wrap;
}
.code.sm {
padding: 7px 10px;
border-radius: 5px;
}
.code .copy-on {
position: absolute;
top: 8px;
right: 8px;
display: inline-flex;
align-items: center;
height: 26px;
padding: 0 10px;
border-radius: 5px;
border: 1px solid #3a4d5e;
color: #dce5ec;
font: 500 12px var(--sans);
background: var(--code-bg);
}
.log {
background: var(--code-bg);
padding: 10px 16px;
display: flex;
flex-direction: column;
gap: 2px;
min-height: 150px;
max-height: 280px;
overflow-y: auto;
}
.log.rounded {
border-radius: 6px;
padding: 8px 12px;
min-height: 0;
}
.log .ln {
display: grid;
grid-template-columns: 82px 74px minmax(0, 1fr);
gap: 8px;
font: 12px/1.6 var(--mono);
color: var(--code-ink);
}
.log.rounded .ln {
grid-template-columns: 96px 80px minmax(0, 1fr);
font-size: 11.5px;
}
.log .ln .a {
color: var(--code-dim);
text-align: right;
}
.log .ln .b.ok {
color: #8cc5a6;
}
.log .ln .b.warn {
color: #e9bc72;
}
.log .ln .b.bad {
color: #e07a6e;
}
.log .ln .b.info {
color: #86aec7;
}
.log .ln .c {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.lines {
padding: 8px 0;
overflow-x: auto;
}
.lines .l {
display: flex;
gap: 12px;
font: 12.5px/1.55 var(--mono);
white-space: pre;
}
.lines.wrap .l {
white-space: pre-wrap;
}
.lines .l .n {
width: 44px;
text-align: right;
color: var(--muted);
flex-shrink: 0;
user-select: none;
}
.lines.scroll {
max-height: 360px;
overflow-y: auto;
}
.copyfield {
display: flex;
align-items: center;
gap: 8px;
height: 32px;
padding: 0 4px 0 10px;
background: var(--soft);
border: 1px solid var(--line-soft);
border-radius: 6px;
min-width: 0;
}
.copyfield .t {
font: 12px var(--mono);
flex-grow: 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
min-width: 0;
}
.copyfield.h34 {
height: 34px;
padding: 0 4px 0 12px;
}
.copyfield.h34 .t {
font-size: 12.5px;
color: var(--ink-2);
}
.copyfield.auto {
height: auto;
min-height: 32px;
padding: 7px 6px 7px 12px;
}
.copyfield.auto .t {
white-space: normal;
word-break: break-all;
line-height: 1.5;
}
.cmdchip {
display: inline-flex;
align-items: center;
gap: 8px;
height: 26px;
padding: 0 9px;
border-radius: 5px;
background: var(--panel);
border: 1px solid var(--line);
font: 11.5px var(--mono);
color: var(--ink);
}
.cmdchip svg {
color: var(--muted);
}
.notice {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 14px;
border-radius: 8px;
border: 1px solid var(--line);
background: var(--soft);
flex-wrap: wrap;
font-size: 13px;
}
.notice.green {
border-color: var(--green-edge);
background: var(--green-soft);
color: var(--green-ink);
}
.notice.amber {
border-color: var(--amber-edge);
background: var(--amber-soft);
}
.notice.red {
border-color: var(--red);
background: var(--red-soft);
}
.notice.blue {
border-color: var(--blue);
background: var(--blue-soft);
}
.notice.plain {
border: 0;
background: var(--blue-soft);
color: var(--ink-2);
font-size: 12.5px;
padding: 9px 12px;
}
.notice .ttl {
font-weight: 600;
font-size: 13.5px;
}
.notice.amber .ttl {
color: var(--amber-ink);
}
.notice.red .ttl {
color: var(--red);
}
.notice.blue .ttl {
color: var(--blue-ink);
}
.notice .sub {
font-size: 12.5px;
color: var(--ink-2);
text-wrap: pretty;
}
.notice .body {
flex: 1 1 280px;
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
}
.drop-hint {
display: flex;
align-items: center;
gap: 16px;
padding: 18px;
border: 2px dashed var(--line);
border-radius: 10px;
background: var(--panel);
flex-wrap: wrap;
}
.drop-hint.sm {
padding: 16px;
}
.icon-tile {
display: inline-flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border-radius: 10px;
background: var(--blue-soft);
color: var(--blue-ink);
flex-shrink: 0;
}
.icon-tile.s38 {
width: 38px;
height: 38px;
border-radius: 8px;
}
.icon-tile.s28 {
width: 28px;
height: 28px;
border-radius: 6px;
background: var(--soft);
border: 1px solid var(--line-soft);
color: var(--ink-2);
}
.empty {
padding: 14px;
color: var(--muted);
font-size: 13px;
text-wrap: pretty;
}
.empty.lg {
padding: 16px 14px;
}
.empty.tb {
border-top: 1px solid var(--line-soft);
}
.error-box {
margin: 12px 14px;
padding: 10px 12px;
border-radius: 6px;
border: 1px solid var(--red);
background: var(--red-soft);
color: var(--red);
font-size: 12.5px;
overflow-wrap: anywhere;
}
.all-clear {
display: flex;
align-items: center;
gap: 10px;
padding: 12px 14px;
color: var(--green-ink);
font-size: 13px;
}
.tw {
overflow-x: auto;
}
table {
border-collapse: collapse;
width: 100%;
min-width: 560px;
font-variant-numeric: tabular-nums;
}
th {
font: 500 10.5px var(--mono);
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--muted);
text-align: left;
padding: 8px 12px;
white-space: nowrap;
background: var(--soft);
border-bottom: 1px solid var(--line-soft);
}
th.r,
td.r {
text-align: right;
}
th .sort {
display: inline-flex;
align-items: center;
gap: 4px;
color: inherit;
font: inherit;
letter-spacing: inherit;
text-transform: inherit;
}
th .sort:hover {
color: var(--ink);
}
th .sort .ar {
font-size: 10px;
color: var(--ink);
min-width: 8px;
}
th.cbx,
td.cbx {
width: 36px;
padding-right: 0;
line-height: 0;
}
td {
padding: 9px 12px;
vertical-align: middle;
border-top: 1px solid var(--line-soft);
}
tbody tr:first-child td {
border-top: 0;
}
tbody tr {
transition: background-color 120ms ease;
}
tbody tr:hover {
background: var(--soft);
}
tbody tr.sel {
background: var(--blue-soft);
}
td.m {
font: 12.5px var(--mono);
}
td.ms {
font: 12px var(--mono);
color: var(--muted);
}
td.mm {
font: 500 12.5px var(--mono);
}
td.dim {
color: var(--muted);
font-size: 12.5px;
}
td.cap {
max-width: 360px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
td.cap180 {
max-width: 180px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.gl-head,
.gl-row {
display: grid;
gap: 12px;
align-items: center;
padding: 9px 14px;
border-bottom: 1px solid var(--line-soft);
min-width: 0;
}
.gl-head {
padding: 7px 14px;
background: var(--soft);
font: 500 10px var(--mono);
letter-spacing: 0.08em;
color: var(--muted);
white-space: nowrap;
}
.gl-row {
color: var(--ink);
}
button.gl-row,
.gl-row.click {
width: 100%;
cursor: pointer;
text-align: left;
}
button.gl-row:hover,
.gl-row.click:hover {
background: var(--soft);
}
.gl-row.dense {
padding: 8px 14px;
}
.gl-scroll {
overflow-x: auto;
}
.minw480 {
min-width: 480px;
}
.minw520 {
min-width: 520px;
}
.minw560 {
min-width: 560px;
}
.minw780 {
min-width: 780px;
}
.cellname {
display: flex;
flex-direction: column;
min-width: 0;
}
.cellname .a {
font: 500 13px var(--mono);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.cellname .b {
font: 11.5px var(--mono);
color: var(--muted);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.cellname .k {
font-size: 10.5px;
font-weight: 400;
color: var(--muted);
}
.num {
font: 12.5px var(--mono);
text-align: right;
}
.num-dim {
font: 11.5px var(--mono);
color: var(--muted);
text-align: right;
white-space: nowrap;
}
.txt-dim {
font: 11.5px var(--mono);
color: var(--muted);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.sortable {
display: inline-flex;
align-items: center;
gap: 4px;
color: inherit;
font: inherit;
letter-spacing: inherit;
}
.sortable:hover {
color: var(--ink);
}
.sortable .ar {
font-size: 10px;
color: var(--ink);
}
.pager {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.pager label {
display: inline-flex;
align-items: center;
gap: 6px;
font: 11.5px var(--mono);
color: var(--muted);
}
.pager .nums {
display: flex;
align-items: center;
gap: 3px;
}
.pager .pg {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 26px;
height: 26px;
padding: 0 6px;
border-radius: 5px;
border: 1px solid var(--line);
background: var(--panel);
color: var(--ink);
font: 12px var(--mono);
}
.pager .pg[aria-current="page"] {
background: var(--ink);
border-color: var(--ink);
color: var(--panel);
}
.pager .pg:disabled {
color: var(--muted);
opacity: 0.55;
}
.pager .gap {
font: 12px var(--mono);
color: var(--muted);
padding: 0 2px;
}
.selbar {
display: flex;
align-items: center;
gap: 10px;
padding: 7px 14px;
border-bottom: 1px solid var(--line-soft);
background: var(--blue-soft);
flex-wrap: wrap;
}
.selbar .what {
font-weight: 600;
font-size: 13px;
color: var(--blue-ink);
}
.filterbar {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 14px;
border-bottom: 1px solid var(--line-soft);
background: var(--soft);
flex-wrap: wrap;
}
.tip {
position: fixed;
left: 0;
top: 0;
z-index: 300;
pointer-events: none;
opacity: 0;
transform: translate3d(-9999px, -9999px, 0);
transition: opacity 120ms ease;
}
.tip .card-in {
display: flex;
flex-direction: column;
gap: 6px;
max-width: 320px;
padding: 8px 10px;
border-radius: 7px;
background: var(--panel);
border: 1px solid var(--line);
box-shadow: 0 8px 24px rgba(20, 28, 36, 0.16), 0 1px 3px rgba(20, 28, 36, 0.08);
color: var(--ink);
transform: scale(0.96);
transform-origin: top left;
transition: transform 110ms cubic-bezier(0.22, 0.61, 0.36, 1);
}
.tip .hd {
display: flex;
align-items: flex-start;
gap: 7px;
}
.tip .sw {
width: 8px;
height: 8px;
border-radius: 2px;
flex-shrink: 0;
margin-top: 4px;
}
.tip .lab {
font-size: 12.5px;
font-weight: 500;
line-height: 1.4;
overflow-wrap: anywhere;
white-space: pre-wrap;
}
.tip .lab.full {
font: 400 12.5px var(--mono);
}
.tip .rows {
display: flex;
flex-direction: column;
gap: 3px;
padding-top: 6px;
border-top: 1px solid var(--line-soft);
}
.tip .rw {
display: flex;
gap: 18px;
justify-content: space-between;
align-items: baseline;
}
.tip .rw .k {
color: var(--muted);
font-size: 11.5px;
white-space: nowrap;
}
.tip .rw .v {
font: 11.5px var(--mono);
text-align: right;
overflow-wrap: anywhere;
}
.menu {
position: fixed;
z-index: 80;
min-width: 200px;
background: var(--panel);
border: 1px solid var(--line);
border-radius: 8px;
box-shadow: var(--shadow-pop);
padding: 4px;
display: flex;
flex-direction: column;
max-height: 320px;
overflow-y: auto;
}
.menu-item {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
height: 32px;
padding: 0 10px;
border-radius: 5px;
font-size: 13px;
color: var(--ink);
width: 100%;
}
.menu-item:hover,
.menu-item:focus-visible {
background: var(--soft);
}
.menu-item.red {
color: var(--red);
}
.menu-item[aria-checked="true"] {
background: var(--blue-soft);
font-weight: 500;
}
.menu-item .hint {
font: 11px var(--mono);
color: var(--muted);
}
.modal-scrim {
position: fixed;
inset: 0;
background: var(--scrim);
z-index: 60;
display: flex;
align-items: center;
justify-content: center;
padding: 16px;
}
.modal {
width: 420px;
max-width: 100%;
max-height: calc(100vh - 32px);
overflow-y: auto;
background: var(--panel);
border-radius: 10px;
padding: 18px;
box-shadow: var(--shadow-modal);
display: flex;
flex-direction: column;
gap: 10px;
}
.modal.wide {
width: 560px;
}
.modal .mt {
font-size: 16px;
font-weight: 600;
}
.modal .mb {
color: var(--muted);
font-size: 13px;
text-wrap: pretty;
}
.modal .acts {
display: flex;
justify-content: flex-end;
gap: 8px;
margin-top: 6px;
flex-wrap: wrap;
}
.modal .opt {
display: flex;
align-items: flex-start;
gap: 10px;
padding: 8px 10px;
border-radius: 6px;
background: var(--soft);
font-size: 13px;
text-align: left;
}
.toast {
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 20px;
z-index: 70;
display: flex;
align-items: center;
gap: 10px;
min-height: 38px;
padding: 0 14px;
border-radius: 8px;
background: var(--ink);
color: var(--panel);
font-size: 13px;
box-shadow: 0 10px 30px rgba(20, 28, 36, 0.25);
white-space: nowrap;
max-width: calc(100vw - 24px);
}
.toast.up {
bottom: 72px;
}
.toast.bad svg {
color: #e07a6e;
}
.toast svg {
color: var(--green-edge);
}
#app {
display: flex;
flex-direction: column;
height: 100vh;
height: 100dvh;
overflow: hidden;
background: var(--bg);
container: app / inline-size;
}
.top {
height: 50px;
flex-shrink: 0;
display: flex;
align-items: center;
gap: 10px;
padding: 0 12px;
background: var(--panel);
border-bottom: 1px solid var(--line);
z-index: 30;
min-width: 0;
}
.top.wide-pad {
padding: 0 16px;
gap: 12px;
}
.brand {
display: flex;
align-items: center;
gap: 9px;
color: var(--ink);
flex-shrink: 0;
padding-left: 4px;
}
.brand img,
.logo24 {
width: 24px;
height: 24px;
display: block;
}
.brand .word,
.wordmark {
font-weight: 600;
font-size: 15px;
}
.vrule {
width: 1px;
height: 20px;
background: var(--line);
flex-shrink: 0;
}
.crumb {
display: flex;
align-items: center;
gap: 6px;
font-size: 14px;
white-space: nowrap;
min-width: 0;
}
.crumb .page-link {
color: var(--ink-2);
flex-shrink: 0;
}
.crumb .sep {
color: var(--muted);
}
.crumb .leaf {
font: 500 13.5px var(--mono);
color: var(--ink);
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
}
.run-pill {
display: inline-flex;
align-items: center;
gap: 8px;
height: 26px;
padding: 0 10px;
border-radius: 13px;
border: 1px solid var(--green-edge);
background: var(--green-soft);
color: var(--green-ink);
font: 12px var(--mono);
white-space: nowrap;
min-width: 0;
overflow: hidden;
}
.run-pill.amber {
border-color: var(--amber-edge);
background: var(--amber-soft);
color: var(--amber-ink);
}
.run-pill .bar > i {
background: var(--green);
}
.ask {
display: flex;
align-items: center;
gap: 10px;
height: 32px;
padding: 0 6px 0 12px;
border: 1px solid var(--line);
border-radius: 6px;
background: var(--soft);
color: var(--muted);
flex: 0 1 300px;
min-width: 150px;
}
.ask:hover {
border-color: var(--blue);
}
.ask .t {
font-size: 13.5px;
flex-grow: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.kbd {
font: 11px var(--mono);
width: 20px;
height: 20px;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 4px;
border: 1px solid var(--line);
background: var(--panel);
flex-shrink: 0;
}
.theme {
display: flex;
align-items: center;
gap: 2px;
padding: 2px;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--soft);
flex-shrink: 0;
}
.theme button {
display: inline-flex;
align-items: center;
justify-content: center;
width: 28px;
height: 26px;
border-radius: 6px;
color: var(--muted);
}
.theme button[aria-pressed="true"] {
background: var(--panel);
color: var(--ink);
box-shadow: 0 1px 2px rgba(20, 28, 36, 0.12), 0 0 0 1px var(--line);
}
.shell-row {
display: flex;
flex-grow: 1;
min-height: 0;
position: relative;
}
.nav {
width: 212px;
flex-shrink: 0;
border-right: 1px solid var(--line);
background: var(--panel);
display: flex;
flex-direction: column;
padding: 14px 10px 10px;
gap: 14px;
overflow-y: auto;
}
.nav-group {
display: flex;
flex-direction: column;
gap: 2px;
}
.nav-label {
font: 500 10px var(--mono);
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--muted);
padding: 0 10px 4px;
}
.nav-item {
display: flex;
align-items: center;
gap: 10px;
height: 32px;
padding: 0 10px;
border-radius: 6px;
font-size: 13.5px;
color: var(--ink);
width: 100%;
}
.nav-item:hover {
background: var(--soft);
}
.nav-item[aria-current="page"] {
background: var(--blue-soft);
font-weight: 500;
}
.nav-item .lab {
flex-grow: 1;
}
.nav-badge {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 18px;
height: 18px;
padding: 0 5px;
border-radius: 9px;
font: 600 10.5px var(--mono);
background: var(--chip);
color: var(--ink-2);
}
.nav-badge.amber {
background: var(--amber-soft);
color: var(--amber-ink);
}
.daemon {
border: 1px solid var(--line);
border-radius: 8px;
padding: 9px 11px;
display: flex;
flex-direction: column;
gap: 3px;
background: var(--soft);
}
.daemon .who {
display: flex;
align-items: center;
gap: 8px;
font: 500 12.5px var(--mono);
}
.daemon .facts {
font: 11px/1.55 var(--mono);
color: var(--muted);
}
.rail {
width: 56px;
flex-shrink: 0;
border-right: 1px solid var(--line);
background: var(--panel);
display: flex;
flex-direction: column;
align-items: center;
padding: 12px 0 10px;
gap: 8px;
overflow-y: auto;
}
.rail-group {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
width: 36px;
padding-bottom: 8px;
border-bottom: 1px solid var(--line-soft);
}
.rail-item {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
width: 36px;
height: 36px;
border-radius: 8px;
color: var(--ink-2);
transition: background 0.15s, color 0.15s;
}
.rail-item:hover {
color: var(--ink);
}
.rail-item[aria-current="page"] {
background: var(--blue-soft);
color: var(--ink);
box-shadow: inset 0 0 0 1px var(--blue);
}
.rail-item .rb {
position: absolute;
top: 6px;
right: 6px;
width: 7px;
height: 7px;
border-radius: 50%;
box-shadow: 0 0 0 2px var(--panel);
background: var(--accent-edge);
}
.rail-daemon {
display: inline-flex;
align-items: center;
justify-content: center;
width: 36px;
height: 36px;
border-radius: 8px;
border: 1px solid var(--line);
background: var(--soft);
}
.nav-scrim {
position: absolute;
inset: 0;
z-index: 44;
background: var(--scrim);
}
.main {
flex-grow: 1;
min-width: 0;
overflow-y: auto;
position: relative;
}
.main.fill {
overflow: hidden;
display: flex;
flex-direction: column;
}
.daemon-down {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 14px;
background: var(--red-soft);
color: var(--red);
border-bottom: 1px solid var(--red);
font-size: 13px;
}
.ld {
position: fixed;
inset: 0;
z-index: 2147483000;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 34px;
background: var(--bg);
pointer-events: all;
}
.ld.area {
z-index: 40;
gap: 18px;
}
.ld .stage {
position: relative;
transform-origin: 50% 50%;
}
.ld .tile {
position: absolute;
will-change: transform;
}
.ld .cap {
display: flex;
flex-direction: column;
align-items: center;
gap: 7px;
width: min(460px, 86%);
text-align: center;
}
.ld .word {
font: 600 19px var(--sans);
letter-spacing: -0.01em;
color: var(--ink);
}
.ld .status {
font: 500 11.5px var(--mono);
letter-spacing: 0.06em;
color: var(--muted);
text-transform: lowercase;
white-space: nowrap;
}
.ld .tipbox {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
width: 100%;
}
.ld .tiplab {
font: 600 10.5px var(--mono);
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--accent-edge);
}
.ld .tiptxt {
font: 400 14.5px/1.55 var(--sans);
color: var(--ink-2);
text-wrap: pretty;
}
.ld .tiptxt code {
font: 500 13px var(--mono);
padding: 1px 6px;
border-radius: 4px;
background: var(--chip);
color: var(--ink);
white-space: nowrap;
}
.welcome-body {
flex-grow: 1;
min-height: 0;
overflow-y: auto;
display: flex;
padding: 24px;
}
.welcome-grid {
width: 100%;
max-width: 980px;
margin: auto;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr));
gap: 12px;
}
.welcome-card {
background: var(--panel);
border: 1px solid var(--line);
border-radius: 10px;
padding: 24px;
display: flex;
flex-direction: column;
gap: 16px;
}
.first-run {
display: inline-flex;
align-self: flex-start;
align-items: center;
gap: 8px;
height: 24px;
padding: 0 10px;
border-radius: 12px;
background: var(--amber-soft);
color: var(--amber-ink);
font: 500 11px var(--mono);
letter-spacing: 0.04em;
}
.welcome-h {
font-size: 25px;
line-height: 1.2;
font-weight: 600;
text-wrap: pretty;
}
.welcome-lead {
color: var(--muted);
font-size: 14px;
text-wrap: pretty;
}
.steps5 {
display: flex;
flex-direction: column;
border: 1px solid var(--line-soft);
border-radius: 8px;
overflow: hidden;
}
.steps5 .s {
display: grid;
grid-template-columns: 26px minmax(0, 1fr) auto;
align-items: center;
gap: 10px;
padding: 9px 12px;
border-top: 1px solid var(--line-soft);
background: var(--soft);
}
.steps5 .s:first-child {
border-top: 0;
}
.num-circle {
display: inline-flex;
align-items: center;
justify-content: center;
width: 22px;
height: 22px;
border-radius: 50%;
border: 1px solid var(--line);
background: var(--panel);
font: 600 11px var(--mono);
color: var(--ink-2);
flex-shrink: 0;
}
.term-hint {
display: flex;
align-items: center;
gap: 10px;
padding-top: 12px;
border-top: 1px solid var(--line-soft);
flex-wrap: wrap;
}
.term-copy {
display: inline-flex;
align-items: center;
gap: 10px;
height: 28px;
padding: 0 4px 0 10px;
border-radius: 5px;
background: var(--soft);
border: 1px solid var(--line-soft);
font: 12px var(--mono);
color: var(--ink);
}
.term-copy .c {
display: inline-flex;
align-items: center;
height: 20px;
padding: 0 7px;
border-radius: 4px;
border: 1px solid var(--line);
background: var(--panel);
font: 500 11px var(--sans);
color: var(--ink-2);
}
.check-row {
display: grid;
grid-template-columns: 20px minmax(0, 1fr);
gap: 10px;
padding: 11px 16px;
border-bottom: 1px solid var(--line-soft);
}
.check-row .ic {
display: flex;
align-items: center;
justify-content: center;
height: 20px;
}
.check-row .k {
font-weight: 500;
font-size: 13.5px;
flex-grow: 1;
}
.check-row .v {
font: 12px var(--mono);
color: var(--ink-2);
text-align: right;
}
.check-row .d {
color: var(--muted);
font-size: 12.5px;
text-wrap: pretty;
}
.shield-foot {
display: flex;
gap: 10px;
padding: 12px 16px;
background: var(--soft);
color: var(--muted);
font-size: 12.5px;
text-wrap: pretty;
}
.shield-foot svg {
color: var(--green);
margin-top: 1px;
}
.wz-steps {
flex-grow: 1;
display: flex;
align-items: center;
justify-content: safe center;
gap: 6px;
min-width: 0;
overflow-x: auto;
scrollbar-width: none;
}
.wz-step {
display: flex;
align-items: center;
gap: 6px;
flex-shrink: 0;
}
.wz-step .ln {
width: 22px;
height: 1px;
background: var(--line);
}
.wz-step .ln.done {
background: var(--green);
}
.wz-step button {
display: flex;
align-items: center;
gap: 7px;
color: var(--ink);
}
.wz-step button:disabled {
cursor: default;
}
.wz-circle {
display: inline-flex;
align-items: center;
justify-content: center;
width: 22px;
height: 22px;
border-radius: 50%;
font: 600 11px var(--mono);
flex-shrink: 0;
background: var(--panel);
border: 1px solid var(--line);
color: var(--muted);
}
.wz-circle.done {
background: var(--green);
border-color: var(--green);
color: #fff;
}
.wz-circle.cur {
background: var(--accent);
border-color: var(--accent);
color: var(--accent-ink);
}
.wz-step .lab {
font-size: 13px;
color: var(--muted);
}
.wz-step .lab.cur {
color: var(--ink);
font-weight: 600;
}
.wz-step .lab.done {
color: var(--ink-2);
}
.wz-scroll {
flex-grow: 1;
min-height: 0;
overflow-y: auto;
}
.wz-body {
max-width: 1140px;
margin: 0 auto;
padding: 20px 24px;
display: grid;
grid-template-columns: minmax(0, 1fr) 300px;
gap: 12px;
align-items: start;
}
.wz-head {
display: flex;
flex-direction: column;
gap: 4px;
padding: 2px 2px 4px;
}
.wz-head .eyebrow {
letter-spacing: 0.1em;
}
.wz-head .h {
font-size: 20px;
font-weight: 600;
}
.wz-rail {
position: sticky;
top: 0;
display: flex;
flex-direction: column;
gap: 12px;
min-width: 0;
}
.sum-row {
display: grid;
grid-template-columns: 70px minmax(0, 1fr) 16px;
gap: 8px;
padding: 8px 14px;
border-bottom: 1px solid var(--line-soft);
align-items: start;
}
.sum-row:last-child {
border-bottom: 0;
}
.sum-row .k {
font: 500 10px var(--mono);
letter-spacing: 0.08em;
color: var(--muted);
padding-top: 2px;
}
.sum-row .v {
font: 12.5px var(--mono);
overflow-wrap: anywhere;
}
.sum-row .v.dim {
color: var(--muted);
font-family: var(--sans);
}
.sum-row svg {
color: var(--green);
margin-top: 2px;
}
.wz-foot {
flex-shrink: 0;
border-top: 1px solid var(--line);
background: var(--panel);
}
.wz-foot-in {
max-width: 1140px;
margin: 0 auto;
padding: 10px 24px;
display: flex;
align-items: center;
gap: 10px;
}
.wz-foot .hint {
color: var(--muted);
font-size: 12.5px;
flex-grow: 1;
text-align: right;
}
.namebox {
display: flex;
align-items: center;
gap: 10px;
height: 44px;
padding: 0 12px;
border-radius: 7px;
background: var(--panel);
border: 1.5px solid var(--blue);
}
.namebox.ok {
border-color: var(--green);
}
.namebox.bad {
border-color: var(--red);
}
.namebox svg {
color: var(--muted);
}
.namebox input {
border: 0;
outline: none;
background: transparent;
flex-grow: 1;
min-width: 0;
font: 500 15px var(--mono);
color: var(--ink);
}
.hint-l {
font-size: 12.5px;
color: var(--muted);
}
.hint-l.bad {
color: var(--red);
}
.hint-l.ok {
color: var(--green-ink);
}
.pick-card {
display: flex;
flex-direction: column;
gap: 6px;
padding: 12px 14px;
border-radius: 8px;
border: 1px solid var(--line);
background: var(--panel);
text-align: left;
color: var(--ink);
transition: border-color 0.15s, background 0.15s;
}
.pick-card:hover {
border-color: var(--blue);
}
.pick-card.on {
border: 1.5px solid var(--blue);
background: var(--blue-soft);
padding: 11.5px 13.5px;
}
.pick-card:disabled {
opacity: 0.55;
}
.pick-card .t {
font-weight: 600;
font-size: 13.5px;
flex-grow: 1;
}
.pick-card .d {
color: var(--muted);
font-size: 12.5px;
text-wrap: pretty;
}
.pick-card .m {
font: 11px var(--mono);
color: var(--ink-2);
}
.pick-card .m12 {
font: 12px var(--mono);
color: var(--ink-2);
}
.pick-card .rec {
font: 10.5px var(--mono);
color: var(--green-ink);
}
.model-line {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 14px;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--soft);
flex-wrap: wrap;
}
.dropzone {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 10px;
padding: 22px 16px;
border-radius: 10px;
border: 2px dashed var(--line);
background: var(--panel);
transition: background 0.12s, border-color 0.12s;
}
.dropzone.drag {
border-color: var(--blue);
background: var(--blue-soft);
}
.dropzone .t {
font-weight: 600;
font-size: 14.5px;
}
.dropzone .d {
color: var(--muted);
font-size: 12.5px;
text-align: center;
}
.browse-head {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 10px 8px 12px;
border-bottom: 1px solid var(--line-soft);
background: var(--soft);
}
.browse-head .dir {
font: 500 12.5px var(--mono);
flex-grow: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.browse-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(min(190px, 100%), 1fr));
max-height: 360px;
overflow-y: auto;
}
.bitem {
display: flex;
align-items: center;
gap: 8px;
padding: 7px 10px;
border-bottom: 1px solid var(--line-soft);
border-right: 1px solid var(--line-soft);
min-width: 0;
}
.bitem.on {
background: var(--blue-soft);
}
.bitem .open {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
flex-grow: 1;
color: var(--ink);
}
.bitem .open svg {
color: var(--muted);
}
.bitem .name {
font: 12.5px var(--mono);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.bitem .note {
font: 10.5px var(--mono);
color: var(--muted);
white-space: nowrap;
}
.bitem.file .name {
color: var(--muted);
}
.suggest-row {
display: flex;
align-items: center;
gap: 10px;
padding: 7px 8px;
border-radius: 5px;
color: var(--ink);
font: 12.5px var(--mono);
width: 100%;
text-align: left;
}
.suggest-row:hover {
background: var(--soft);
}
.suggest-row svg {
color: var(--muted);
}
.suggest-row .note {
color: var(--muted);
font-size: 11px;
}
.src-row {
display: grid;
grid-template-columns: 28px minmax(0, 1fr) auto 28px;
align-items: center;
gap: 10px;
padding: 9px 10px 9px 14px;
border-bottom: 1px solid var(--line-soft);
}
.src-row .p {
font: 13px var(--mono);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.src-row .m {
color: var(--muted);
font-size: 12px;
}
.toggles-foot {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
gap: 8px;
padding: 10px;
background: var(--soft);
}
.dec-grid {
display: grid;
grid-template-columns: 30px minmax(0, 1fr) 100px 300px;
gap: 14px;
align-items: center;
padding: 11px 14px;
border-bottom: 1px solid var(--line-soft);
}
.dec-grid.head {
padding: 7px 14px;
font: 500 10px var(--mono);
letter-spacing: 0.08em;
color: var(--muted);
white-space: nowrap;
}
.dec-grid.nocb {
grid-template-columns: minmax(0, 1fr) 100px 300px;
}
.dec-grid .p {
font: 500 13px var(--mono);
word-break: break-all;
}
.dec-grid .why {
color: var(--muted);
font-size: 12.5px;
}
.dec-grid .why b {
color: var(--ink-2);
font-weight: 500;
}
.evidence {
align-self: flex-start;
max-width: 100%;
padding: 4px 8px;
border-radius: 4px;
background: var(--chip);
font: 12px var(--mono);
color: var(--ink-2);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.risk-pct {
font: 600 13px var(--mono);
}
.risk-pct.high {
color: var(--red);
}
.risk-pct.medium {
color: var(--amber-ink);
}
.risk-pct.low {
color: var(--green-ink);
}
.dec-list {
max-height: 480px;
overflow-y: auto;
}
.group-row {
display: grid;
grid-template-columns: 16px minmax(0, 1fr) auto;
align-items: center;
gap: 10px;
padding: 9px 14px;
color: var(--ink);
width: 100%;
text-align: left;
}
.group-row:hover {
background: var(--soft);
}
.caret {
transition: transform 0.15s;
color: var(--muted);
}
.caret.open {
transform: rotate(90deg);
}
.group-paths {
padding: 2px 14px 10px 40px;
display: flex;
flex-direction: column;
gap: 3px;
}
.group-paths span {
font: 12px var(--mono);
color: var(--muted);
overflow-wrap: anywhere;
}
.stage-chip {
display: inline-flex;
align-items: center;
gap: 6px;
height: 24px;
padding: 0 9px;
border-radius: 12px;
font-size: 12px;
border: 1px solid var(--line);
color: var(--muted);
background: var(--panel);
}
.stage-chip.done {
color: var(--green-ink);
border-color: var(--green-edge);
background: var(--green-soft);
}
.stage-chip.cur {
color: var(--blue-ink);
border-color: var(--blue);
background: var(--blue-soft);
}
.stage-box {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 10px;
border-radius: 6px;
border: 1px solid var(--line-soft);
background: var(--soft);
font-size: 12.5px;
color: var(--muted);
}
.stage-box.done {
color: var(--ink-2);
}
.stage-box.cur {
color: var(--ink);
border-color: var(--blue);
}
.run-stats {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
border-top: 1px solid var(--line-soft);
border-bottom: 1px solid var(--line-soft);
}
.run-stats > div {
padding: 10px 16px;
display: flex;
flex-direction: column;
gap: 2px;
border-right: 1px solid var(--line-soft);
min-width: 0;
}
.run-stats > div:last-child {
border-right: 0;
}
.run-stats .v {
font: 13.5px var(--mono);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.lives {
display: flex;
align-items: center;
gap: 8px;
padding: 9px 16px;
background: var(--soft);
color: var(--muted);
font-size: 12.5px;
}
.done-banner {
display: flex;
align-items: center;
gap: 14px;
padding: 14px 16px;
border: 1px solid var(--green-edge);
border-radius: 8px;
background: var(--green-soft);
}
.done-banner .ic {
display: inline-flex;
align-items: center;
justify-content: center;
width: 34px;
height: 34px;
border-radius: 50%;
background: var(--green);
color: #fff;
flex-shrink: 0;
}
.done-banner .t {
font-weight: 600;
font-size: 15px;
color: var(--green-ink);
}
.done-banner .l {
font: 12px var(--mono);
color: var(--ink-2);
}
.try-row {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 10px;
padding: 9px 14px;
border-bottom: 1px solid var(--line-soft);
align-items: center;
}
.client-pick {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 14px;
border-bottom: 1px solid var(--line-soft);
border-right: 1px solid var(--line-soft);
text-align: left;
color: var(--ink);
min-width: 0;
}
.client-pick:hover:not(:disabled) {
background: var(--soft);
}
.client-pick.on {
background: var(--blue-soft);
}
.client-pick:disabled {
opacity: 0.6;
}
.client-pick .nm {
font-weight: 500;
font-size: 13.5px;
}
.check4 {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.check4 > button {
display: flex;
gap: 10px;
padding: 12px 14px;
border-right: 1px solid var(--line-soft);
color: var(--ink);
text-align: left;
}
.check4 > button:last-child {
border-right: 0;
}
.check4 > button:hover {
background: var(--soft);
}
.cdot {
display: inline-flex;
align-items: center;
justify-content: center;
width: 18px;
height: 18px;
border-radius: 50%;
flex-shrink: 0;
border: 1.5px solid var(--line);
background: var(--panel);
margin-top: 1px;
}
.cdot.done {
background: var(--green);
border-color: var(--green);
color: #fff;
}
.cdot.next {
border-color: var(--accent);
}
.ctitle {
font-weight: 500;
font-size: 13px;
}
.ctitle.done {
color: var(--muted);
text-decoration: line-through;
}
.gl-home-stores {
grid-template-columns: minmax(130px, 1.6fr) 140px 64px minmax(110px, 1.1fr) 62px;
}
.gl-activity {
grid-template-columns: 62px 96px minmax(0, 1fr) 70px;
}
.gl-asks {
grid-template-columns: 62px 100px minmax(0, 1fr) 60px;
font: 12px var(--mono);
}
.attn-row {
display: grid;
grid-template-columns: 8px minmax(0, 1fr) auto;
gap: 10px;
align-items: center;
padding: 10px 14px;
border-bottom: 1px solid var(--line-soft);
}
.attn-row:last-child {
border-bottom: 0;
}
.attn-row .t {
font-weight: 500;
font-size: 13px;
}
.attn-row .s {
color: var(--muted);
font-size: 12px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.agent-row {
display: grid;
grid-template-columns: 8px minmax(0, 1fr) auto;
gap: 10px;
align-items: center;
padding: 9px 14px;
border-bottom: 1px solid var(--line-soft);
}
.agent-row:last-child {
border-bottom: 0;
}
.feed {
padding: 8px 14px 10px;
display: flex;
flex-direction: column;
gap: 5px;
}
.feed .f {
display: grid;
grid-template-columns: 60px minmax(0, 1fr);
gap: 8px;
font: 11.5px/1.5 var(--mono);
}
.feed .f .t {
color: var(--muted);
}
.feed .f .m {
color: var(--ink-2);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.live-word {
display: inline-flex;
align-items: center;
gap: 6px;
font: 11.5px var(--mono);
color: var(--green-ink);
}
.quote {
padding: 3px 8px;
border-radius: 4px;
background: var(--chip);
font: 12px var(--mono);
}
.stbl {
container: stbl / inline-size;
overflow: visible;
}
.gl-stores {
grid-template-columns: minmax(180px, 1.6fr) 140px 70px 84px 116px minmax(150px, 1.25fr) 66px 30px;
}
.st-disk {
display: flex;
flex-direction: column;
align-items: flex-end;
min-width: 0;
}
.st-disk .reclaim {
font: 10.5px var(--mono);
color: var(--amber-ink);
white-space: nowrap;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
.lang-row {
display: grid;
grid-template-columns: 10px 96px minmax(0, 1fr) 84px 44px;
align-items: center;
gap: 8px;
font: 12.5px var(--mono);
}
.lang-row .pct {
text-align: right;
color: var(--muted);
font-size: 11px;
}
.fact-row {
display: flex;
justify-content: space-between;
gap: 12px;
font-size: 12.5px;
}
.fact-row .k {
color: var(--muted);
}
.fact-row .v {
font-family: var(--mono);
text-align: right;
overflow-wrap: anywhere;
}
.months {
display: flex;
align-items: flex-end;
gap: 6px;
flex-grow: 1;
min-height: 120px;
}
.months > div {
flex: 1 1 0;
align-self: stretch;
display: flex;
align-items: flex-end;
min-width: 0;
}
.months > div:hover {
filter: brightness(1.08);
}
.months i {
display: block;
width: 100%;
border-radius: 3px 3px 0 0;
background: var(--blue);
min-height: 2px;
}
.months i.zero {
background: var(--line);
}
.month-labels {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: 6px;
font: 10.5px var(--mono);
color: var(--muted);
}
.blurb {
background: var(--blue-soft);
border-radius: 8px;
padding: 12px 14px;
display: flex;
flex-direction: column;
gap: 4px;
}
.blurb .v {
font: 500 16px var(--mono);
color: var(--blue-ink);
}
.blurb .t {
font-size: 12.5px;
color: var(--ink-2);
text-wrap: pretty;
}
.back {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 12.5px;
align-self: flex-start;
}
.sd-name {
font: 600 19px var(--mono);
}
.root-row {
display: grid;
grid-template-columns: 28px minmax(0, 1fr) auto;
gap: 10px;
align-items: center;
padding: 9px 14px;
border-bottom: 1px solid var(--line-soft);
}
.reader-row {
display: grid;
grid-template-columns: 92px minmax(0, 1fr) 58px;
gap: 10px;
align-items: center;
font: 12px var(--mono);
}
.tree-row {
display: flex;
align-items: center;
gap: 8px;
padding: 5px 14px;
font: 12.5px var(--mono);
color: var(--ink);
width: 100%;
text-align: left;
}
.tree-row:hover {
background: var(--soft);
}
.tree-row .c {
color: var(--muted);
width: 12px;
}
.tree-row .m {
color: var(--muted);
font-size: 11.5px;
}
.hist-row {
display: grid;
grid-template-columns: 16px 150px minmax(0, 1fr) auto;
gap: 12px;
align-items: center;
padding: 10px 14px;
color: var(--ink);
width: 100%;
text-align: left;
}
.hist-row:hover {
background: var(--soft);
}
.hist-open {
padding: 0 14px 12px 42px;
display: flex;
flex-direction: column;
gap: 8px;
}
.maint-row {
display: flex;
align-items: center;
gap: 10px;
}
.maint-row .t {
font-weight: 500;
font-size: 13px;
}
.maint-row .s {
color: var(--muted);
font-size: 12px;
}
.model-note {
display: flex;
gap: 10px;
padding: 9px 10px;
border-radius: 6px;
background: var(--soft);
font-size: 12px;
color: var(--muted);
}
.sr-bar {
flex-shrink: 0;
background: var(--panel);
border-bottom: 1px solid var(--line);
padding: 14px 20px 12px;
display: flex;
flex-direction: column;
gap: 10px;
}
.sr-field {
position: relative;
flex: 1 1 420px;
min-width: 0;
display: flex;
align-items: center;
gap: 12px;
height: 44px;
padding: 0 6px 0 14px;
border: 1.5px solid var(--blue);
border-radius: 8px;
background: var(--panel);
}
.sr-field > svg {
color: var(--ink-2);
}
.sr-field input {
border: 0;
outline: none;
background: transparent;
flex-grow: 1;
min-width: 0;
font-size: 15px;
color: var(--ink);
}
.scope-btn {
display: inline-flex;
align-items: center;
gap: 6px;
height: 32px;
padding: 0 10px;
border-radius: 6px;
color: var(--ink);
font-size: 13px;
white-space: nowrap;
min-width: 0;
flex-shrink: 1;
}
.scope-btn:hover {
background: var(--soft);
}
.scope-btn .v {
font: 500 12.5px var(--mono);
min-width: 0;
max-width: 140px;
overflow: hidden;
text-overflow: ellipsis;
}
.sr-body {
flex-grow: 1;
min-height: 0;
overflow-y: auto;
padding: 16px 20px 24px;
}
.sr-body.tight {
padding: 12px 20px 20px;
}
.example {
display: flex;
flex-direction: column;
gap: 4px;
padding: 12px 14px;
border-bottom: 1px solid var(--line-soft);
border-right: 1px solid var(--line-soft);
color: var(--ink);
text-align: left;
}
.example:hover {
background: var(--soft);
}
.example .q {
font-size: 13.5px;
font-weight: 500;
}
.example .w {
color: var(--muted);
font-size: 12px;
}
.recent-row {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 14px;
border-bottom: 1px solid var(--line-soft);
color: var(--ink);
font-size: 13px;
width: 100%;
text-align: left;
}
.recent-row:hover {
background: var(--soft);
}
.recent-row svg {
color: var(--muted);
}
.sr-split {
flex-grow: 1;
min-height: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
}
.sr-left {
display: flex;
flex-direction: column;
min-height: 0;
border-right: 1px solid var(--line);
}
.sr-list {
flex-grow: 1;
min-height: 0;
overflow-y: auto;
padding: 12px 16px;
display: flex;
flex-direction: column;
gap: 10px;
}
.sr-foot {
flex-shrink: 0;
display: flex;
align-items: center;
gap: 10px;
padding: 9px 16px;
border-top: 1px solid var(--line);
background: var(--panel);
font: 11.5px var(--mono);
color: var(--muted);
}
.sr-detail {
min-height: 0;
overflow-y: auto;
background: var(--soft);
padding: 12px 16px;
display: flex;
flex-direction: column;
gap: 10px;
}
.hit-group {
flex-shrink: 0;
}
.hit-head {
display: flex;
align-items: baseline;
gap: 8px;
padding: 8px 12px;
background: var(--soft);
border-bottom: 1px solid var(--line-soft);
}
.hit-head .p {
font: 600 12.5px var(--mono);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.hit {
display: block;
padding: 9px 12px;
border-bottom: 1px solid var(--line-soft);
color: var(--ink);
width: 100%;
text-align: left;
}
.hit:last-child {
border-bottom: 0;
}
.hit:hover {
background: var(--soft);
}
.hit.on {
background: var(--blue-soft);
box-shadow: inset 3px 0 0 var(--blue);
}
.hit .rg {
font: 12.5px var(--mono);
color: var(--muted);
}
.hit .sym {
font: 500 12.5px var(--mono);
}
.hit .snip {
font: 12px var(--mono);
color: var(--muted);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-top: 4px;
}
.title-strip {
background: var(--blue-soft);
border-radius: 4px;
padding: 6px 9px;
font: 12.5px var(--mono);
color: var(--blue-ink);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.hop-row {
display: grid;
grid-template-columns: 62px minmax(0, 1fr) auto;
gap: 10px;
align-items: center;
padding: 7px 12px;
border-bottom: 1px solid var(--line-soft);
width: 100%;
text-align: left;
color: var(--ink);
}
.hop-row:hover {
background: var(--soft);
}
.hop-row .dir {
font: 500 10px var(--mono);
letter-spacing: 0.06em;
color: var(--muted);
}
.brief-row {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 12px;
border-bottom: 1px solid var(--line-soft);
}
.scope-pop {
position: absolute;
right: 70px;
top: 46px;
z-index: 41;
width: 230px;
max-height: 320px;
overflow-y: auto;
background: var(--panel);
border: 1px solid var(--line);
border-radius: 8px;
box-shadow: var(--shadow-pop);
padding: 4px;
display: flex;
flex-direction: column;
}
.filter-chip {
display: inline-flex;
align-items: center;
gap: 6px;
height: 28px;
padding: 0 4px 0 10px;
border: 1px solid var(--blue);
border-radius: 14px;
background: var(--blue-soft);
color: var(--blue-ink);
font: 12px var(--mono);
}
.filter-chip button {
display: inline-flex;
width: 20px;
height: 20px;
align-items: center;
justify-content: center;
border-radius: 10px;
color: var(--blue-ink);
}
.filter-chip input {
border: 0;
outline: none;
background: transparent;
font: 12px var(--mono);
color: var(--ink);
width: 140px;
}
.gr-head {
flex-shrink: 0;
background: var(--panel);
border-bottom: 1px solid var(--line);
padding: 12px 20px 0;
display: flex;
flex-direction: column;
gap: 6px;
}
.gr-explore {
flex-grow: 1;
min-height: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) 320px;
}
.g-map {
position: relative;
background: var(--soft);
overflow: hidden;
min-height: 460px;
}
.g-bar {
position: absolute;
left: 12px;
top: 12px;
right: 12px;
z-index: 3;
display: flex;
gap: 8px;
align-items: center;
flex-wrap: wrap;
}
.g-live {
position: absolute;
inset: 52px 0 64px 0;
}
.g-live.mini {
inset: 0;
}
.g-live svg.edges {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
}
.g-node {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
display: inline-flex;
align-items: center;
height: 24px;
padding: 0 8px;
border-radius: 5px;
font: 500 11.5px var(--mono);
white-space: nowrap;
border: 1px solid var(--line);
background: var(--panel);
color: var(--ink-2);
cursor: grab;
user-select: none;
z-index: 2;
}
.g-node.near {
background: var(--blue-soft);
border-color: var(--blue);
color: var(--ink);
}
.g-node.sel {
background: var(--accent);
border-color: var(--accent-edge);
color: var(--accent-ink);
font-weight: 600;
z-index: 3;
}
.g-node.hop2 {
opacity: 0.85;
}
.g-node.dim {
opacity: 0.55;
}
.g-foot {
position: absolute;
left: 0;
right: 0;
bottom: 0;
z-index: 3;
display: flex;
align-items: center;
gap: 8px 16px;
flex-wrap: wrap;
min-height: 40px;
padding: 6px 12px;
background: var(--panel);
border-top: 1px solid var(--line);
font: 11px var(--mono);
}
.g-legend {
display: flex;
gap: 12px;
align-items: center;
flex-wrap: wrap;
color: var(--ink-2);
}
.g-legend span {
display: flex;
align-items: center;
gap: 6px;
white-space: nowrap;
}
.g-legend i {
width: 16px;
border-top: 1.5px solid var(--blue);
}
.g-legend i.dot {
border-top-style: dotted;
border-top-color: var(--muted);
background: none;
height: 0;
border-radius: 0;
}
.g-legend i.dash {
border-top-style: dashed;
border-top-color: #b07a2a;
}
.g-side {
border-left: 1px solid var(--line);
background: var(--panel);
display: flex;
flex-direction: column;
min-height: 0;
}
.g-side-scroll {
flex-grow: 1;
min-height: 0;
overflow-y: auto;
}
.g-sel {
padding: 12px 14px;
display: flex;
flex-direction: column;
gap: 6px;
border-bottom: 1px solid var(--line-soft);
}
.g-sel .nm {
font: 600 16px var(--mono);
word-break: break-all;
}
.g-sel .two {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 6px;
margin-top: 4px;
}
.chipo {
display: inline-flex;
align-items: center;
height: 22px;
padding: 0 8px;
border-radius: 11px;
border: 1px solid var(--line);
font-size: 12px;
}
.chipo.blue {
background: var(--blue-soft);
color: var(--blue-ink);
border-color: transparent;
}
.edge-row {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 8px;
align-items: center;
padding: 6px 8px;
border-radius: 5px;
color: var(--ink);
width: 100%;
text-align: left;
}
.edge-row:hover {
background: var(--soft);
}
.edge-row .n {
font: 500 12.5px var(--mono);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.edge-row .w {
font: 11px var(--mono);
color: var(--muted);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.subsys {
background: var(--panel);
border: 1px solid var(--line);
border-radius: 6px;
padding: 8px 10px;
display: flex;
flex-direction: column;
gap: 2px;
color: var(--ink);
width: 100%;
text-align: left;
}
.subsys:hover {
border-color: var(--blue);
}
.subsys .h {
font: 11px/1.45 var(--mono);
color: var(--ink-2);
overflow-wrap: anywhere;
}
.gr-pad {
flex-grow: 1;
min-height: 0;
overflow-y: auto;
padding: 14px 20px 24px;
display: flex;
flex-direction: column;
gap: 12px;
}
.ctrl-card {
background: var(--panel);
border: 1px solid var(--line);
border-radius: 8px;
padding: 12px 14px;
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.ctrl-card .grow-box {
flex: 1 1 220px;
}
.ctrl-card .inp {
flex: 1 1 140px;
}
.mini-graph {
position: relative;
height: 340px;
background: var(--panel);
border: 1px solid var(--line);
border-radius: 8px;
overflow: hidden;
}
.mini-graph .label {
position: absolute;
left: 10px;
top: 10px;
z-index: 3;
display: inline-flex;
align-items: center;
height: 24px;
padding: 0 8px;
border: 1px solid var(--line);
border-radius: 4px;
background: var(--panel);
font: 11px var(--mono);
color: var(--muted);
}
.file-bar-row {
display: grid;
grid-template-columns: minmax(0, 1fr) 110px 40px;
gap: 10px;
align-items: center;
padding: 6px 12px;
border-bottom: 1px solid var(--line-soft);
font: 12px var(--mono);
}
.chain {
padding: 12px 14px;
display: flex;
flex-direction: column;
}
.chain .node {
display: flex;
align-items: center;
gap: 10px;
}
.chain .node .n {
font: 500 13px var(--mono);
}
.chain .node .w {
font: 11.5px var(--mono);
color: var(--muted);
}
.chain .cd {
width: 10px;
height: 10px;
border-radius: 50%;
border: 2px solid var(--blue);
background: var(--panel);
flex-shrink: 0;
}
.chain .cd.end {
background: var(--accent);
border-color: var(--accent-edge);
}
.chain .edge {
display: flex;
align-items: center;
gap: 8px;
margin-left: 4px;
padding: 6px 0 6px 15px;
border-left: 2px solid var(--blue);
flex-wrap: wrap;
}
.chain .edge.inferred {
border-left-style: dotted;
border-left-color: var(--muted);
}
.chain .edge.ambiguous {
border-left-style: dashed;
border-left-color: var(--amber-edge);
}
.support {
padding: 10px 14px;
border-bottom: 1px solid var(--line-soft);
display: flex;
flex-direction: column;
gap: 6px;
}
.client-row {
display: flex;
align-items: center;
gap: 10px;
padding: 9px 14px;
border-bottom: 1px solid var(--line-soft);
width: 100%;
text-align: left;
color: var(--ink);
}
.client-row:hover {
background: var(--soft);
}
.client-row.on {
background: var(--blue-soft);
}
.group-label {
padding: 6px 14px;
background: var(--soft);
border-bottom: 1px solid var(--line-soft);
font: 500 10px var(--mono);
letter-spacing: 0.1em;
color: var(--muted);
text-transform: uppercase;
}
.one-click {
display: flex;
align-items: center;
gap: 12px;
padding: 12px;
border-radius: 7px;
background: var(--soft);
border: 1px solid var(--line-soft);
flex-wrap: wrap;
}
.check-card {
background: var(--panel);
border: 1px solid var(--line);
border-radius: 8px;
padding: 12px 14px;
display: flex;
flex-direction: column;
gap: 4px;
min-width: 0;
}
.endpoint-box {
display: flex;
align-items: center;
gap: 8px;
height: 34px;
padding: 0 4px 0 12px;
border: 1px solid var(--line);
border-radius: 6px;
background: var(--panel);
min-width: 0;
}
.endpoint-box .u {
font: 12.5px var(--mono);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.bar-row {
display: grid;
grid-template-columns: 112px minmax(0, 1fr) 44px;
gap: 10px;
align-items: center;
font: 12px var(--mono);
color: var(--ink);
width: 100%;
text-align: left;
}
.bar-row.on .k {
font-weight: 600;
}
.bar-row:hover .k {
color: var(--blue);
}
.replay-item {
display: grid;
grid-template-columns: 62px minmax(0, 1fr) auto;
gap: 10px;
align-items: center;
}
.replay-item .q {
font: 12.5px var(--mono);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
border-left: 1.5px solid var(--line);
padding-left: 10px;
}
.kind-card {
display: flex;
flex-direction: column;
gap: 4px;
padding: 12px 14px;
border-radius: 8px;
border: 1px solid var(--line);
background: var(--panel);
text-align: left;
color: var(--ink);
}
.kind-card:hover {
border-color: var(--blue);
}
.kind-card.on {
border: 1.5px solid var(--blue);
background: var(--blue-soft);
padding: 11.5px 13.5px;
}
.kind-card .t {
font-weight: 600;
font-size: 13.5px;
}
.kind-card .d {
color: var(--muted);
font-size: 12px;
text-wrap: pretty;
}
.kind-card .w {
font: 11px var(--mono);
color: var(--ink-2);
}
.preview {
background: var(--soft);
padding: 12px 14px;
font: 12.5px/1.6 var(--mono);
white-space: pre-wrap;
color: var(--ink);
max-height: 300px;
overflow-y: auto;
overflow-wrap: anywhere;
}
.save-line {
display: grid;
grid-template-columns: minmax(0, 1fr) 120px 90px;
gap: 12px;
align-items: center;
padding: 9px 14px;
border-bottom: 1px solid var(--line-soft);
}
.save-line.net {
background: var(--soft);
padding: 10px 14px;
border-bottom: 0;
}
.save-line .tok {
font: 12.5px var(--mono);
color: var(--ink-2);
text-align: right;
}
.save-line .cost {
font: 600 13.5px var(--mono);
text-align: right;
}
.save-line.net .cost {
font-size: 17px;
}
.sched-row {
display: grid;
grid-template-columns: minmax(0, 1fr) auto 28px;
gap: 10px;
align-items: center;
padding: 9px 14px;
border-bottom: 1px solid var(--line-soft);
}
.verdict {
display: flex;
align-items: center;
gap: 14px;
padding: 14px 16px;
border: 1px solid var(--green-edge);
border-radius: 8px;
background: var(--green-soft);
flex-wrap: wrap;
}
.verdict.amber {
border-color: var(--amber-edge);
background: var(--amber-soft);
}
.verdict .ic {
display: inline-flex;
align-items: center;
justify-content: center;
width: 36px;
height: 36px;
border-radius: 50%;
background: var(--green);
color: #fff;
flex-shrink: 0;
}
.verdict.amber .ic {
background: var(--accent-edge);
}
.verdict .t {
font-weight: 600;
font-size: 15px;
color: var(--green-ink);
}
.verdict.amber .t {
color: var(--amber-ink);
}
.verdict .l {
font: 12px var(--mono);
color: var(--ink-2);
}
.fact-card {
background: var(--panel);
border: 1px solid var(--line);
border-radius: 8px;
padding: 10px 14px;
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
}
.fact-card .v {
font: 500 14px var(--mono);
overflow-wrap: anywhere;
}
.fact-card .d {
color: var(--muted);
font-size: 12px;
text-wrap: pretty;
}
.verify-row {
display: grid;
grid-template-columns: 22px minmax(0, 1fr);
gap: 10px;
padding: 10px 14px;
border-bottom: 1px solid var(--line-soft);
}
.verify-dot {
display: inline-flex;
align-items: center;
justify-content: center;
width: 22px;
height: 22px;
border-radius: 50%;
border: 1px solid var(--line);
background: var(--panel);
font: 600 11px var(--mono);
color: var(--ink-2);
}
.verify-dot.done {
background: var(--green);
border-color: var(--green);
color: #fff;
}
.dl-row {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 10px;
align-items: center;
padding: 9px 14px;
border-bottom: 1px solid var(--line-soft);
}
.rule {
padding: 10px 14px;
border-bottom: 1px solid var(--line-soft);
border-right: 1px solid var(--line-soft);
display: flex;
flex-direction: column;
gap: 4px;
}
.rule .t {
display: flex;
align-items: center;
gap: 8px;
font-weight: 600;
font-size: 13px;
}
.rule .d {
color: var(--muted);
font-size: 12.5px;
text-wrap: pretty;
}
.rule .f {
font: 11.5px var(--mono);
color: var(--ink-2);
}
.subnav {
display: flex;
flex-direction: column;
gap: 2px;
position: sticky;
top: 0;
}
.subnav button {
display: flex;
align-items: center;
gap: 10px;
height: 34px;
padding: 0 10px;
border-radius: 6px;
font-size: 13.5px;
color: var(--ink);
width: 100%;
text-align: left;
}
.subnav button:hover {
background: var(--panel);
}
.subnav button {
border: 1px solid transparent;
}
.subnav button[aria-current="true"] {
background: var(--panel);
border-color: var(--line);
font-weight: 500;
}
.subnav .meta {
font: 11px var(--mono);
color: var(--muted);
}
.limit-row {
display: grid;
grid-template-columns: minmax(0, 1fr) 150px;
gap: 14px;
align-items: center;
padding: 10px 14px;
border-bottom: 1px solid var(--line-soft);
}
.limit-row:last-child {
border-bottom: 0;
}
.limit-row .k {
font-weight: 500;
font-size: 13px;
}
.limit-row .n {
color: var(--muted);
font-size: 12px;
text-wrap: pretty;
}
.lane-row {
display: grid;
grid-template-columns: 30px minmax(0, 1fr) auto 76px;
gap: 12px;
align-items: center;
padding: 10px 14px;
border-bottom: 1px solid var(--line-soft);
}
.lane-row:last-child {
border-bottom: 0;
}
.lane-row.off {
opacity: 0.6;
}
.lane-act {
display: flex;
justify-content: flex-end;
}
.exp {
display: inline-flex;
align-items: center;
height: 17px;
padding: 0 6px;
border-radius: 9px;
background: var(--amber-soft);
color: var(--amber-ink);
font: 10px var(--mono);
}
.kv {
display: grid;
grid-template-columns: 110px minmax(0, 1fr);
gap: 10px;
padding: 8px 14px;
border-bottom: 1px solid var(--line-soft);
}
.kv:last-child {
border-bottom: 0;
}
.kv .k {
font: 500 10px var(--mono);
letter-spacing: 0.08em;
color: var(--muted);
padding-top: 2px;
text-transform: uppercase;
}
.kv .v {
font: 12.5px var(--mono);
overflow-wrap: anywhere;
}
.kv.sm .v {
font-size: 12px;
}
.lang-cell {
display: flex;
align-items: center;
gap: 8px;
padding: 5px 14px;
border-bottom: 1px solid var(--line-soft);
min-width: 0;
}
.lang-cell .ok {
color: var(--green);
font-size: 12px;
}
.lang-cell .n {
font: 500 12.5px var(--mono);
}
.lang-cell .e {
font: 11px var(--mono);
color: var(--muted);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
min-width: 0;
}
.point {
padding: 10px 14px;
border-bottom: 1px solid var(--line-soft);
border-right: 1px solid var(--line-soft);
display: flex;
flex-direction: column;
gap: 2px;
}
@container stbl (max-width: 859px) {
.gl-stores {
grid-template-columns: minmax(0, 1.6fr) 140px 64px 80px 116px 62px 30px;
}
.gl-stores > .c-saved {
display: none;
}
}
@container stbl (max-width: 679px) {
.gl-stores {
grid-template-columns: minmax(0, 1fr) 112px 116px 30px;
}
.gl-stores > .c-files,
.gl-stores > .c-chunks,
.gl-stores > .c-written {
display: none;
}
}
@container stbl (max-width: 479px) {
.gl-stores.gl-head {
display: none;
}
.gl-stores {
grid-template-columns: minmax(0, 1fr) auto 30px;
gap: 10px;
}
.gl-stores > .c-disk {
display: none;
}
}
@container app (max-width: 1099px) {
.split.s-260 {
grid-template-columns: 220px minmax(0, 1fr);
}
}
@container app (max-width: 959px) {
.split,
.wz-body,
.gr-explore,
.sr-split {
grid-template-columns: minmax(0, 1fr) !important;
}
.q4,
.check4,
.run-stats {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.check4 > button:nth-child(2) {
border-right: 0;
}
.check4 > button:nth-child(-n + 2) {
border-bottom: 1px solid var(--line-soft);
}
.run-stats > div:nth-child(2) {
border-right: 0;
}
.span2 {
grid-row: auto;
}
.wz-rail {
position: static;
}
.main.fill {
overflow-y: auto;
display: block;
}
.main.fill > .fillpage {
height: auto;
min-height: 100%;
}
.g-map {
min-height: 380px;
}
.subnav {
flex-direction: row;
position: static;
overflow-x: auto;
scrollbar-width: none;
gap: 4px;
padding-bottom: 2px;
}
.subnav button {
width: auto;
flex-shrink: 0;
}
.g-side {
border-left: 0;
border-top: 1px solid var(--line);
}
.sr-left {
border-right: 0;
border-bottom: 1px solid var(--line);
}
.sr-list,
.sr-detail {
overflow: visible;
}
.hide-md {
display: none !important;
}
}
@container app (max-width: 759px) {
.page {
padding: 14px 14px 24px;
}
.wz-body,
.wz-foot-in,
.sr-bar,
.sr-body,
.gr-head,
.gr-pad {
padding-left: 14px;
padding-right: 14px;
}
.hide-sm {
display: none !important;
}
.stack-sm {
grid-template-columns: minmax(0, 1fr) !important;
gap: 8px !important;
}
.full-sm {
width: 100% !important;
flex: 1 1 100% !important;
}
.toast {
white-space: normal;
height: auto;
min-height: 38px;
padding-top: 9px;
padding-bottom: 9px;
}
.ask {
flex: 0 0 32px;
min-width: 0;
width: 32px;
padding: 0;
justify-content: center;
}
.nav {
position: absolute;
top: 0;
bottom: 0;
left: 0;
z-index: 45;
width: min(272px, 86%);
box-shadow: 0 18px 48px rgba(20, 28, 36, 0.28);
}
.crumb {
flex-shrink: 1;
overflow: hidden;
}
.tight-sm {
padding-left: 10px !important;
padding-right: 10px !important;
}
.g-map {
min-height: 0;
}
.g-bar {
position: relative;
left: auto;
top: auto;
right: auto;
padding: 12px 12px 0;
}
.g-live {
position: relative;
inset: auto;
height: 340px;
}
.g-foot {
position: relative;
}
.dec-grid,
.dec-grid.nocb {
grid-template-columns: 30px minmax(0, 1fr);
}
.dec-grid.nocb {
grid-template-columns: minmax(0, 1fr);
}
.dec-grid > .risk,
.dec-grid > .acts {
grid-column: 2;
}
.dec-grid.nocb > .risk,
.dec-grid.nocb > .acts {
grid-column: 1;
}
.dec-grid.head {
display: none;
}
.limit-row {
grid-template-columns: minmax(0, 1fr);
}
.save-line {
grid-template-columns: minmax(0, 1fr) 90px;
}
.save-line .tok {
display: none;
}
}
@container app (max-width: 479px) {
.hide-xs {
display: none !important;
}
.q4,
.run-stats {
grid-template-columns: minmax(0, 1fr);
}
.check4 {
grid-template-columns: minmax(0, 1fr);
}
.check4 > button {
border-right: 0;
border-bottom: 1px solid var(--line-soft);
}
.run-stats > div {
border-right: 0;
}
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.001ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.001ms !important;
}
}
.center { align-items: center; text-align: center; }
.min0 {
min-width: 0;
min-height: 0;
}
.max1200 {
max-width: 1200px;
}
.max980 {
max-width: 980px;
}
.max560 {
max-width: 560px;
margin: auto;
}
.gap0 {
gap: 0;
}
.gap14 {
gap: 14px 16px;
}
.pad8 {
padding: 8px 10px;
}
.pad7 {
padding: 7px 0;
}
.pad2 {
padding: 2px;
}
.pad-subsys {
padding: 0 10px 10px;
}
.subsys-wrap {
border-top: 1px solid var(--line);
background: var(--soft);
}
.subsys-wrap .group-row {
padding: 10px 14px;
}
.tb-line {
border-top: 1px solid var(--line-soft);
padding-top: 10px;
}
.rule-line {
height: 1px;
background: var(--line-soft);
margin: 2px 0;
}
.amber-ink {
color: var(--amber-ink);
}
.green-ink {
color: var(--green-ink);
}
.blue-ink {
color: var(--blue-ink);
}
.red {
color: var(--red);
}
.ink {
color: var(--ink);
}
.big14 {
font-size: 14px;
}
.big15 {
font-size: 15px;
}
.big18 {
font-size: 18px;
}
.t13 {
font-size: 13px;
}
.i {
font-style: italic;
}
.minw60 {
min-width: 60px;
}
.align-start {
align-items: start;
}
.welcome-card.max560 {
width: 100%;
}
.lnk:disabled {
opacity: 0.5;
}
.card-b > .btn,
.card.pad > .btn,
.card.pad16 > .btn {
align-self: flex-start;
}
.ell-start bdi {
unicode-bidi: plaintext;
}
.row > .tg-row {
flex: 1 1 220px;
width: auto;
min-width: 0;
}
.verdict > .col,
.notice > .col {
flex: 1 1 300px;
}
.namebox:focus-within,
.sr-field:focus-within,
.filter-chip:focus-within {
box-shadow: 0 0 0 2px var(--blue-soft);
border-color: var(--blue);
}
.inp:focus-visible,
.sel:focus-visible {
box-shadow: 0 0 0 2px var(--blue-soft);
}
.pill {
flex-shrink: 0;
}
.switch.boxed {
height: 32px;
min-height: 0;
padding: 0 12px 0 8px;
background: var(--panel);
border: 1px solid var(--line);
border-radius: 6px;
}
.switch.boxed.h34 {
height: 34px;
}
.switch.boxed.sm {
height: auto;
padding: 4px 10px 4px 8px;
font-size: 12px;
}
.g-defs {
display: flex;
flex-direction: column;
gap: 2px;
margin-top: 4px;
}
.g-def {
display: flex;
justify-content: space-between;
gap: 8px;
padding: 4px 6px;
border-radius: 5px;
text-align: left;
min-width: 0;
}
.g-def:hover,
.g-def.on {
background: var(--chip);
}
.cb .cb-tick {
display: none;
}
.cb[aria-checked="true"] .cb-tick {
display: block;
}
.sr-bar .seg.lg {
height: 44px;
align-self: center;
flex-wrap: nowrap;
}
.sr-bar .seg.lg > button {
height: 100%;
padding: 0 16px;
}
button.busy {
cursor: progress;
}
button.busy .tg::after {
border: 2px solid var(--line);
border-top-color: var(--blue);
box-sizing: border-box;
animation: spin 0.8s linear infinite;
}
button.busy:not(.switch):not(.tg-row):not(.tg-plain):not(.cb)::after {
content: "";
display: inline-block;
width: 11px;
height: 11px;
margin-left: 7px;
border-radius: 50%;
border: 2px solid currentColor;
border-top-color: transparent;
opacity: 0.7;
animation: spin 0.8s linear infinite;
vertical-align: -1px;
flex-shrink: 0;
}
@media (prefers-reduced-motion: reduce) {
button.busy .tg::after,
button.busy::after {
animation-duration: 2.4s;
}
}
td.cap-path {
max-width: 420px;
min-width: 160px;
}
td.cap-path .ell-start {
display: block;
}
td.c-why {
min-width: 260px;
max-width: 520px;
}
.btn.dd {
gap: 8px;
max-width: 260px;
min-width: 0;
justify-content: space-between;
}
.btn.dd svg {
flex: none;
color: var(--muted);
}
.btn.dd.mono {
font-family: var(--mono);
}
.btn.dd[aria-expanded="true"] {
border-color: var(--accent);
}
.is-loading .tw {
opacity: 0.55;
transition: opacity 0.15s;
}
.drop-catch {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
opacity: 0;
border: 0;
padding: 0;
resize: none;
background: transparent;
color: transparent;
cursor: copy;
z-index: 2;
}
.drop-catch {
pointer-events: none;
caret-color: transparent;
}
.dropzone.native .drop-catch {
pointer-events: auto;
}
.dropzone.native > .row {
position: relative;
z-index: 3;
}
.dropzone.native.drag > .row {
z-index: 1;
}
.ok-ink {
color: var(--green);
}
.red-ink {
color: var(--red);
}
.browse-hint {
padding: 6px 12px;
font-size: 12px;
color: var(--muted);
border-bottom: 1px solid var(--line-soft);
}
.bitem .open {
user-select: none;
}
.lane-group {
padding: 8px 14px 6px;
font: 500 11px var(--mono);
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--muted);
background: var(--soft);
border-bottom: 1px solid var(--line-soft);
}
.lane-row.na {
opacity: 0.5;
}
.lane-row.na .switch {
cursor: not-allowed;
}
td,
th,
button,
.btn,
.lnk,
.pill,
.tag,
.chip,
.meta,
.nowrap {
overflow-wrap: normal;
}
.sr-bar {
display: block;
}
.sr-bar > * + * {
margin-top: 10px;
}
.hist-open {
min-width: 0;
overflow: hidden;
}
@container app (max-width: 759px) {
.tabs {
flex-wrap: wrap;
row-gap: 0;
column-gap: 16px;
}
.subnav {
flex-wrap: wrap;
overflow: visible;
}
.ctrl-card .inp {
flex: 1 1 calc(100% - 64px);
}
.ctrl-card .eyebrow {
min-width: 44px;
}
.ctrl-card > .btn.icon {
order: 10;
}
.hist-row {
grid-template-columns: 16px minmax(0, 1fr) auto;
row-gap: 2px;
}
.hist-row > :nth-child(2) {
grid-column: 2;
grid-row: 1;
}
.hist-row > :nth-child(3) {
grid-column: 2;
grid-row: 2;
}
.hist-row > :nth-child(4) {
grid-column: 3;
grid-row: 1 / span 2;
}
.hist-open {
padding-left: 14px;
}
.log .ln,
.log.rounded .ln {
grid-template-columns: 52px 54px minmax(0, 1fr);
gap: 6px;
}
}
@container app (max-width: 759px) {
.gl-scroll > .minw780 {
min-width: 0;
}
.dec-grid {
grid-template-columns: 26px minmax(0, 1fr);
row-gap: 8px;
}
.dec-grid > :nth-child(3),
.dec-grid > :nth-child(4) {
grid-column: 2;
}
.dec-grid.head > :nth-child(3),
.dec-grid.head > :nth-child(4) {
display: none;
}
.dec-grid .acts .row {
flex-wrap: wrap;
}
}
.log,
.hist-open > * {
min-width: 0;
max-width: 100%;
}
.log .ln {
min-width: 0;
}