/* Z-Grid site styles. Part 1 = the approved homepage (moved verbatim from index.html). */
@font-face { font-family: "Stencil"; src: url("fonts/big-shoulders-stencil-display.woff2") format("woff2"); font-weight: 100 900; font-display: swap; }
@font-face { font-family: "Barlow"; src: url("fonts/barlow-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Barlow"; src: url("fonts/barlow-600.woff2") format("woff2"); font-weight: 600; font-display: swap; }
@font-face { font-family: "Readout"; src: url("fonts/share-tech-mono.woff2") format("woff2"); font-weight: 400; font-display: swap; }

:root {
  --bg: #141a17;
  --bg-2: #1a221e;
  --ink: #ddd3a8;        /* stencil cream from the banner */
  --ink-2: #a8ac93;
  --ink-3: #78806f;
  --olive: #6d6e45;      /* block letter face */
  --olive-hi: #8c8c5c;
  --olive-lo: #3c3d27;
  --outline: #0b0d0b;
  --line: rgba(221, 211, 168, .13);
  --fog: 150, 168, 158;
  --wrap: 1120px;
}

* { box-sizing: border-box; }
html { background: var(--bg); color-scheme: dark; }
body {
  margin: 0;
  background:
    radial-gradient(120% 60% at 50% 0%, rgba(var(--fog), .07), transparent 60%),
    var(--bg);
  color: var(--ink-2);
  font: 400 18px/1.6 "Barlow", system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
}
/* film grit, same speckle feel as the art */
body::after {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 50; opacity: .07;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}
a { color: inherit; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.wrap { width: min(var(--wrap), 100% - 48px); margin-inline: auto; }

/* ---------- hero: the banner art carries the logo ---------- */
.hero { position: relative; overflow: hidden; background: #1c2421; }
.hero img {
  display: block; width: 100%; height: auto; max-height: 90vh;
  aspect-ratio: 3168 / 1344; object-fit: cover; object-position: 50% 45%;
}
.hero::after { /* sink the art into the page */
  content: ""; position: absolute; inset: auto 0 0 0; height: 34%;
  background: linear-gradient(to bottom, transparent, var(--bg) 92%);
  pointer-events: none;
}
.hero::after { z-index: 2; }
.fog { position: absolute; inset: auto -50% 8% -50%; height: 45%; pointer-events: none; z-index: 1; opacity: .9; }
.fog::before, .fog::after {
  content: ""; position: absolute; inset: 0;
  background:
    radial-gradient(28% 60% at 18% 70%, rgba(var(--fog), .16), transparent 70%),
    radial-gradient(22% 50% at 46% 80%, rgba(var(--fog), .12), transparent 70%),
    radial-gradient(30% 55% at 78% 72%, rgba(var(--fog), .14), transparent 70%);
  animation: drift 70s linear infinite alternate;
}
.fog::after { animation-duration: 95s; animation-direction: alternate-reverse; opacity: .7; transform: scaleX(-1); }
@keyframes drift { from { translate: -12% 0; } to { translate: 12% 0; } }

/* ---------- brief ---------- */
.brief { position: relative; z-index: 2; margin-top: -3.5rem; padding-bottom: 5.5rem; }
.readout span { white-space: nowrap; }
.readout {
  display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1.4rem;
  font: 400 .9rem/1 "Readout", ui-monospace, monospace; letter-spacing: .14em; text-transform: uppercase;
  color: var(--ink-3); margin: 0 0 1.6rem;
}
.status { display: inline-flex; align-items: center; gap: .55rem; color: var(--ink); }
.status i { width: .55rem; height: .55rem; background: var(--olive-hi); box-shadow: 0 0 0 2px var(--outline), 0 0 12px rgba(140, 140, 92, .7); animation: blink 2.4s steps(2, jump-none) infinite; }
@keyframes blink { 50% { opacity: .25; } }

.brief-grid { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2rem 4rem; align-items: end; }
h2 {
  margin: 0; font: 900 clamp(3rem, 6vw, 5.4rem)/.9 "Stencil", Impact, sans-serif;
  text-transform: uppercase; letter-spacing: .01em; color: var(--ink);
}
h2 span { display: block; white-space: nowrap; }
h2 .block { /* the logo's chunky olive block letters */
  color: var(--olive);
  -webkit-text-stroke: 7px var(--outline); paint-order: stroke fill;
  text-shadow: 2px 2px 0 var(--olive-lo), 4px 4px 0 var(--olive-lo), 6px 6px 0 var(--outline);
}
.brief p { margin: 0 0 1.8rem; max-width: 34rem; font-size: 1.15rem; color: var(--ink-2); text-wrap: pretty; }

.btn {
  display: inline-flex; align-items: center; gap: .7rem; min-height: 52px; padding: .2rem 1.5rem .1rem;
  font: 800 1.45rem/1 "Stencil", Impact, sans-serif; letter-spacing: .06em; text-transform: uppercase; text-decoration: none;
  color: var(--ink); background: var(--olive); border: 3px solid var(--outline);
  box-shadow: 5px 5px 0 0 var(--olive-lo), 5px 5px 0 3px var(--outline);
  transition: transform .12s ease, box-shadow .12s ease, background-color .12s ease;
}
.btn:hover { background: #77784b; }
.btn:active { transform: translate(4px, 4px); box-shadow: 1px 1px 0 0 var(--olive-lo), 1px 1px 0 3px var(--outline); }
.btn:focus-visible { outline: 2px dashed var(--ink); outline-offset: 7px; }
.btn svg { width: 1.35rem; height: 1.35rem; fill: currentColor; }

/* ---------- manifest ---------- */
.manifest { padding: 4.5rem 0 5rem; background: var(--bg-2); border-block: 1px solid var(--line); }
.manifest header { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5rem 2rem; margin-bottom: 1.8rem; }
.manifest h3 { margin: 0; font: 900 clamp(2.2rem, 4.5vw, 3.2rem)/1 "Stencil", Impact, sans-serif; letter-spacing: .02em; text-transform: uppercase; color: var(--ink); }
.manifest header span { font: 400 .9rem/1 "Readout", monospace; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); }
.manifest ol { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--outline); }
.manifest li {
  display: grid; grid-template-columns: 3.2rem 11rem 1fr auto; gap: 1.5rem; align-items: baseline;
  padding: 1.15rem 0; border-bottom: 1px dashed var(--line);
}
.manifest li:last-child { border-bottom: 2px solid var(--outline); }
.n { font: 400 .95rem/1 "Readout", monospace; color: var(--olive-hi); }
.cat { font: 800 1.7rem/1 "Stencil", Impact, sans-serif; letter-spacing: .05em; text-transform: uppercase; color: var(--ink); }
.what { color: var(--ink-2); }
.mods { font: 400 .85rem/1.5 "Readout", monospace; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); text-align: right; }

/* ---------- footer ---------- */
footer { padding: 2.6rem 0 3rem; }
.foot { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.4rem; }
.foot img { width: 46px; height: 46px; border: 2px solid var(--outline); box-shadow: 3px 3px 0 var(--olive-lo); }
.foot strong { display: block; font: 800 1.35rem/1.1 "Stencil", Impact, sans-serif; letter-spacing: .05em; text-transform: uppercase; color: var(--ink); }
.foot .credit { font-weight: 600; color: var(--ink-2); }
.legal { margin: 1.6rem 0 0; font-size: .85rem; color: var(--ink-3); }

/* ---------- small screens ---------- */
@media (max-width: 860px) {
  .brief-grid { grid-template-columns: 1fr; gap: 1.6rem; }
  h2 { font-size: clamp(2.6rem, 11vw, 5.4rem); }
  .manifest li { grid-template-columns: 2.4rem 1fr; gap: .35rem 1rem; }
  .manifest .what, .manifest .mods { grid-column: 2; text-align: left; }
}
@media (max-width: 640px) {
  body { font-size: 17px; }
  .hero img { aspect-ratio: 1.52; } /* crop the side trees so the logo reads */
  .brief { margin-top: -.5rem; padding-bottom: 4rem; }
  .readout { gap: .7rem 1.2rem; }
  h2 .block { -webkit-text-stroke-width: 5px; }
}
@media (prefers-reduced-motion: reduce) {
  .fog::before, .fog::after, .status i { animation: none; }
  .btn { transition: none; }
}

/* ===================== Part 2: shared top bar (every signed-in page) ===================== */
[hidden] { display: none !important; }
.topbar { position: sticky; top: 0; z-index: 40; background: var(--bg); border-bottom: 2px solid var(--outline); box-shadow: 0 1px 0 var(--line); }
.topbar-in { display: flex; align-items: center; justify-content: space-between; gap: 1rem; height: 60px; padding-inline: clamp(12px, 3vw, 28px); }
.brand { display: inline-flex; align-items: center; gap: .7rem; min-height: 44px; text-decoration: none; color: var(--ink); }
.brand img { width: 34px; height: 34px; border: 2px solid var(--outline); box-shadow: 2px 2px 0 var(--olive-lo); }
.brand span { font: 900 1.6rem/1 "Stencil", Impact, sans-serif; letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }
.brand:focus-visible, .who a:focus-visible, .chip:focus-visible, .menu button:focus-visible { outline: 2px dashed var(--ink); outline-offset: 3px; }
.who { display: flex; align-items: center; gap: .8rem; min-width: 0; }
.nav-admin {
  display: inline-flex; align-items: center; min-height: 44px; padding: .1rem 1rem 0; text-decoration: none;
  font: 800 1.15rem/1 "Stencil", Impact, sans-serif; letter-spacing: .08em; text-transform: uppercase;
  color: var(--ink); background: var(--olive); border: 2px solid var(--outline); box-shadow: 3px 3px 0 0 var(--olive-lo);
}
.nav-admin:hover { background: #77784b; }
.nav-admin[aria-current="page"] { background: var(--olive-lo); box-shadow: none; }
.acct { position: relative; min-width: 0; }
.chip {
  display: flex; align-items: center; gap: .6rem; min-height: 44px; max-width: 100%; padding: 4px 12px 4px 4px; cursor: pointer;
  color: var(--ink); background: var(--bg-2); border: 2px solid var(--outline); font: 600 1rem/1 "Barlow", system-ui, sans-serif;
}
.chip:hover { border-color: var(--olive); }
.chip img { width: 32px; height: 32px; flex: none; background: var(--olive-lo); }
.chip .nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 14rem; }
.chip svg { width: 12px; height: 12px; flex: none; fill: var(--ink-3); }
.role {
  display: inline-flex; align-items: center; max-width: 11rem; padding: .3rem .5rem .25rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  font: 400 .78rem/1 "Readout", ui-monospace, monospace; letter-spacing: .1em; text-transform: uppercase;
  color: var(--ink-2); border: 1px solid currentColor; background: rgba(0, 0, 0, .25);
}
.menu {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 45; width: min(300px, calc(100vw - 24px)); padding: 14px;
  background: var(--bg-2); border: 2px solid var(--outline); box-shadow: 5px 5px 0 0 var(--olive-lo), 5px 5px 0 2px var(--outline);
}
.menu .who-is { margin: 0 0 .2rem; font-weight: 600; color: var(--ink); overflow-wrap: anywhere; }
.menu .handle { margin: 0 0 .9rem; font: 400 .85rem/1.2 "Readout", monospace; color: var(--ink-3); overflow-wrap: anywhere; }
.menu h4 { margin: 0 0 .5rem; font: 400 .78rem/1 "Readout", monospace; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); }
.menu ul { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.menu .none { font-size: .95rem; color: var(--ink-3); }
.menu form { margin: 0; padding-top: .9rem; border-top: 1px dashed var(--line); }
.menu button {
  width: 100%; min-height: 44px; cursor: pointer; font: 800 1.1rem/1 "Stencil", Impact, sans-serif; letter-spacing: .08em; text-transform: uppercase;
  color: var(--ink); background: transparent; border: 2px solid var(--outline); box-shadow: inset 0 0 0 1px var(--olive-lo);
}
.menu button:hover { background: var(--olive-lo); }
@media (max-width: 560px) {
  .topbar-in { gap: .6rem; }
  .brand { gap: .55rem; }
  .brand span { font-size: 1.35rem; letter-spacing: .04em; }
  .who { gap: .5rem; }
  .chip .nm, .chip svg { display: none; }
  .chip { padding-right: 8px; gap: .5rem; }
  .role { letter-spacing: .06em; max-width: 8rem; }
  .nav-admin { padding-inline: .7rem; font-size: 1.05rem; letter-spacing: .06em; }
}

/* ===================== Part 3: login gate ===================== */
.gate .brief { padding-bottom: 4.5rem; }
.gate .actions { display: flex; flex-wrap: wrap; gap: 1.2rem 1.4rem; align-items: center; }
.btn-2 { background: var(--bg-2); }
.btn-2:hover { background: var(--olive-lo); }
.gate footer { border-top: 1px solid var(--line); background: var(--bg-2); }

/* ===================== Part 4: Developer panel (Operate surface) ===================== */
.ops { width: min(1480px, 100% - 32px); margin: 22px auto 48px; display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 22px; align-items: start; }
.box { background: var(--bg-2); border: 2px solid var(--outline); min-width: 0; }
.box > header { display: flex; align-items: center; justify-content: space-between; gap: .8rem; min-height: 46px; padding: .55rem 14px; border-bottom: 1px solid var(--line); }
.box > header h2 { margin: 0; font: 800 1.25rem/1 "Stencil", Impact, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: var(--ink); text-shadow: none; }
.box > header .count { font: 400 .85rem/1 "Readout", monospace; color: var(--ink-3); }
.box .body { padding: 12px 14px; }
.empty { margin: 0; padding: 14px; color: var(--ink-3); font-size: .95rem; }

/* server list */
.srv-list { list-style: none; margin: 0; padding: 0; }
.srv-list li { border-bottom: 1px solid var(--line); }
.srv-list li:last-child { border-bottom: 0; }
.srv { display: block; width: 100%; text-align: left; cursor: pointer; padding: 12px 14px 13px 10px; border: 0; border-left: 4px solid transparent;
  background: transparent; color: var(--ink-2); font: 400 .95rem/1.35 "Barlow", system-ui, sans-serif; }
.srv:hover { background: rgba(221, 211, 168, .04); }
.srv[aria-current="true"] { background: rgba(109, 110, 69, .18); border-left-color: var(--olive-hi); }
.srv:focus-visible { outline: 2px dashed var(--ink); outline-offset: -4px; }
.srv .top { display: flex; align-items: center; justify-content: space-between; gap: .6rem; margin-bottom: .6rem; }
.srv .name { font: 800 1.3rem/1.05 "Stencil", Impact, sans-serif; letter-spacing: .04em; text-transform: uppercase; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.srv dl { display: grid; grid-template-columns: repeat(4, auto); justify-content: start; gap: .25rem 1.1rem; margin: 0; }
.srv dt { font: 400 .68rem/1.2 "Readout", monospace; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); }
.srv dd { margin: 0; font: 400 .92rem/1.2 "Readout", monospace; color: var(--ink); white-space: nowrap; }
.srv .on-list { margin: .55rem 0 0; font-size: .9rem; color: var(--ink-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.srv .addr { margin: .3rem 0 0; font: 400 .82rem/1.2 "Readout", monospace; color: var(--ink-3); }

/* state badges */
.st { display: inline-flex; align-items: center; gap: .45rem; flex: none; padding: .32rem .5rem .28rem; font: 400 .74rem/1 "Readout", monospace; letter-spacing: .12em; text-transform: uppercase;
  border: 1px solid currentColor; color: var(--ink-3); background: rgba(0, 0, 0, .25); white-space: nowrap; }
.st i { width: .5rem; height: .5rem; background: currentColor; }
.st.online { color: #a9c46c; }
.st.starting, .st.stopping { color: #d8b45a; }
.st.crashed, .st.agent-off { color: #d9785c; }

/* detail */
.detail { display: grid; gap: 18px; min-width: 0; }
.head { padding: 16px 18px; display: grid; gap: 16px; }
.head .row1 { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; }
.head h1 { margin: 0; font: 900 clamp(1.9rem, 3vw, 2.6rem)/1 "Stencil", Impact, sans-serif; letter-spacing: .02em; text-transform: uppercase; color: var(--ink); }
.facts { display: flex; flex-wrap: wrap; gap: .7rem 1.8rem; margin: 0; }
.facts div { display: grid; gap: .35rem; }
.facts dt { font: 400 .72rem/1 "Readout", monospace; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); }
.facts dd { margin: 0; font: 400 1.02rem/1.1 "Readout", monospace; color: var(--ink); }
.power { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.hint { margin: 0; font-size: .95rem; color: #d8b45a; }

.b {
  display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: .15rem 1.05rem 0; cursor: pointer;
  font: 800 1.12rem/1 "Stencil", Impact, sans-serif; letter-spacing: .07em; text-transform: uppercase;
  color: var(--ink); background: var(--olive); border: 2px solid var(--outline); box-shadow: 3px 3px 0 0 var(--olive-lo), 3px 3px 0 2px var(--outline);
  transition: transform .1s ease, box-shadow .1s ease;
}
.b:hover { background: #77784b; }
.b:active { transform: translate(3px, 3px); box-shadow: 0 0 0 0 var(--olive-lo), 0 0 0 2px var(--outline); }
.b:focus-visible { outline: 2px dashed var(--ink); outline-offset: 5px; }
.b.ghost { background: var(--bg); }
.b.ghost:hover { background: var(--olive-lo); }
.b.warn { background: #6e3f2c; }
.b.warn:hover { background: #7d4934; }
.b.sm { padding-inline: .8rem; font-size: 1rem; box-shadow: 2px 2px 0 0 var(--olive-lo), 2px 2px 0 2px var(--outline); }
.b:disabled, .b:disabled:hover { cursor: not-allowed; opacity: .38; transform: none; background: var(--olive); }
.b.ghost:disabled { background: var(--bg); }
.b.warn:disabled { background: #6e3f2c; }

.cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.stack { display: grid; gap: 18px; min-width: 0; }
.rows { list-style: none; margin: 0; padding: 0; }
.rows li { display: flex; align-items: center; gap: .8rem; min-height: 58px; padding: 7px 14px; border-bottom: 1px dashed var(--line); }
.rows li:last-child { border-bottom: 0; }
.rows .face { width: 32px; height: 32px; flex: none; image-rendering: pixelated; background: var(--olive-lo); border: 1px solid var(--outline); }
.rows .pn { flex: 1; min-width: 0; font: 400 1rem/1.25 "Readout", monospace; color: var(--ink); overflow-wrap: anywhere; }
.rows .pn small { display: block; margin-top: .15rem; font: 400 .86rem/1.3 "Barlow", system-ui, sans-serif; color: var(--ink-3); }
.rows .acts { display: flex; gap: 10px; flex: none; }

.line { display: flex; gap: 10px; }
.line input { flex: 1; min-width: 0; }
input[type="text"] {
  min-height: 44px; padding: 0 12px; font: 400 1rem/1 "Readout", ui-monospace, monospace; color: var(--ink);
  background: var(--bg); border: 2px solid var(--outline); box-shadow: inset 0 0 0 1px var(--olive-lo); border-radius: 0;
}
input[type="text"]::placeholder { color: var(--ink-3); }
input[type="text"]:focus { outline: none; box-shadow: inset 0 0 0 1px var(--olive-hi); }
input[type="text"]:disabled { opacity: .45; }
.out { margin: 10px 0 0; min-height: 3.2em; max-height: 14em; overflow: auto; padding: 10px 12px; white-space: pre-wrap; overflow-wrap: anywhere;
  font: 400 .92rem/1.45 "Readout", ui-monospace, monospace; color: var(--ink-2); background: var(--bg); border: 1px solid var(--line); }
.out:empty::before { content: "The server's answer shows here."; color: var(--ink-3); }
.out.fail, .msg.fail { color: #d9785c; }
.msg { margin: 8px 0 0; min-height: 1.4em; font-size: .92rem; color: var(--ink-3); }
.msg:empty { display: none; }

.log { list-style: none; margin: 0; padding: 0; }
.log li { display: grid; grid-template-columns: 4.4rem minmax(0, 1fr) auto; gap: .15rem .8rem; padding: 9px 14px; border-bottom: 1px dashed var(--line); font-size: .93rem; }
.log li:last-child { border-bottom: 0; }
.log time { font: 400 .82rem/1.55 "Readout", monospace; color: var(--ink-3); }
.log .what { color: var(--ink-2); overflow-wrap: anywhere; }
.log .what b { font-weight: 600; color: var(--ink); }
.log .res { grid-column: 2 / 4; font: 400 .85rem/1.4 "Readout", monospace; color: var(--ink-3); overflow-wrap: anywhere; white-space: pre-wrap; }
.log .res.fail { color: #d9785c; }
.log .stt { font: 400 .72rem/1.7 "Readout", monospace; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); }
.log .stt.done { color: #a9c46c; }
.log .stt.failed { color: #d9785c; }
.log .stt.queued, .log .stt.sent { color: #d8b45a; }

dialog.confirm { width: min(440px, calc(100vw - 24px)); padding: 0; color: var(--ink-2); background: var(--bg-2); border: 2px solid var(--outline);
  box-shadow: 6px 6px 0 0 var(--olive-lo), 6px 6px 0 2px var(--outline); }
dialog.confirm::backdrop { background: rgba(8, 10, 9, .72); }
dialog.confirm form { margin: 0; padding: 18px; display: grid; gap: 14px; }
dialog.confirm h2 { margin: 0; font: 900 1.7rem/1 "Stencil", Impact, sans-serif; letter-spacing: .03em; text-transform: uppercase; color: var(--ink); }
dialog.confirm p { margin: 0; }
dialog.confirm label { display: grid; gap: .45rem; }
dialog.confirm .btns { display: flex; justify-content: flex-end; gap: 14px; margin-top: 4px; }

.loading { margin: 0; padding: 40px 14px; text-align: center; color: var(--ink-3); }
@media (max-width: 1180px) { .cols { grid-template-columns: 1fr; } }
@media (max-width: 860px) {
  .ops { grid-template-columns: 1fr; width: calc(100% - 20px); margin-top: 12px; gap: 14px; }
  .detail, .cols, .stack { gap: 14px; }
}
@media (max-width: 480px) {
  .head { padding: 14px; }
  .rows li { flex-wrap: wrap; }
  .rows .acts { margin-left: auto; }
  .log li { grid-template-columns: 4rem minmax(0, 1fr); }
  .log .stt, .log .res { grid-column: 2; }
}
@media (prefers-reduced-motion: reduce) { .b { transition: none; } }
.label { font: 400 .78rem/1 "Readout", ui-monospace, monospace; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); }
.rows li.blank, .log li.blank, .srv-list li.blank { display: block; min-height: 0; padding: 0; }

/* admin: idle pause notice */
.paused-note { position: fixed; left: 50%; bottom: 18px; translate: -50% 0; z-index: 40; margin: 0; padding: 10px 16px;
  background: var(--bg-2); border: 2px solid var(--outline); box-shadow: 3px 3px 0 var(--olive-lo);
  font: 400 .85rem/1.3 "Readout", ui-monospace, monospace; letter-spacing: .06em; color: var(--ink-2); }
.paused-note[hidden] { display: none; }
