/* Hallmark · shape: app screen · genre: modern-minimal · theme: Terrazzo (deal 1/3, seed cpu-ram-fab1·5bea360f·2026-11-01·r0) · nav: top bar · signature: live server and project register · states: loading empty error full · terrazzo: off-white · axes: light/geometric-sans/warm · posture: restrained · contrast: pass · v2.0.0 */
/* Hallmark · pre-emit critique: P4 H4 E4 S4 R5 V4 · weakest: S, using actual server services and real measurements gives this register its own content */
/* Hallmark · finish-review: subagent · ship · 0 findings · gap: none */
/* Hallmark · dismissed 25 · the mobile host caption contains the machine name and two measurements, not prose; its 24ch measure leaves room for the refresh action at 320px */
/* Hallmark · waive 49b · only user-created thread title links wrap, action labels stay on one line · Диалоги Codex retain their full names so users can identify the right conversation on narrow screens */
@import url('./tokens.css');
@import url('./base.css');
:root { --font-body: system-ui, -apple-system, "Segoe UI", sans-serif; --font-display: var(--font-body); --font-outlier: ui-monospace, monospace; --container: 1344px; --gutter: 40px; --color-clear: transparent; --color-success-soft: oklch(94% 0.025 150); --color-error-soft: oklch(94% 0.025 27); }
body { font-synthesis: none; }
button, input, select, summary, a { -webkit-tap-highlight-color: var(--color-clear); }
button, a, summary { touch-action: manipulation; }
button, .button, select { white-space: nowrap; }
svg { fill: none; stroke: currentColor; stroke-width: 1.6; flex-shrink: 0; }
.topbar { border-bottom: 1px solid var(--color-rule); }
.topbar-inner { display: flex; align-items: center; justify-content: space-between; min-height: 76px; gap: var(--space-lg); }
.wordmark { display: inline-flex; align-items: center; gap: var(--space-sm); text-decoration: none; font-weight: 700; }
nav { display: flex; align-items: center; gap: var(--space-lg); font-size: var(--text-sm); }
nav a { display: inline-flex; min-height: 44px; align-items: center; text-decoration: none; }
nav a:hover { color: var(--color-accent); }
.page-heading { display: flex; justify-content: space-between; gap: var(--space-lg); align-items: center; padding-block: var(--space-xl); }
h1 { font-size: var(--text-2xl); line-height: 1.2; }
h2 { font-size: var(--text-lg); line-height: 1.3; letter-spacing: 0; }
.page-heading p { margin-top: var(--space-xs); font-size: var(--text-sm); }
.muted, .label { color: var(--color-muted); }
.refresh-group { display: flex; gap: var(--space-md); align-items: center; font-size: var(--text-sm); }
.button { display: inline-flex; justify-content: center; align-items: center; gap: var(--space-xs); min-height: 44px; padding: 0 var(--space-md); background: var(--color-clear); border: 1px solid var(--color-muted); color: var(--color-ink); font-size: var(--text-sm); font-weight: 500; text-decoration: none; cursor: pointer; }
.button.primary { background: var(--color-ink); color: var(--color-paper); border-color: var(--color-ink); }
.button:hover { background: var(--color-paper-2); }
.button.primary:hover { background: var(--color-ink-2); }
.button:active, .text-button:active { transform: translateY(1px); }
button:disabled { opacity: 0.55; cursor: not-allowed; }
.text-button { background: var(--color-clear); color: var(--color-ink); border: 0; border-radius: 0; padding: var(--space-xs) 0; min-height: 44px; font-size: var(--text-sm); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.text-button:hover { color: var(--color-accent); }
.stats { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); border-top: 2px solid var(--color-ink); padding-block: var(--space-lg); }
.stat { border-left: 1px solid var(--color-rule); padding-inline: var(--space-lg); min-width: 0; }
.stat:first-child { border-left: 0; padding-left: 0; }
.stat:last-child { padding-right: 0; }
.stat h2 { font-size: var(--text-sm); font-weight: 500; }
.stat-value { font-size: var(--text-3xl); line-height: 1.3; font-weight: 500; font-variant-numeric: tabular-nums; margin-block: var(--space-xs); letter-spacing: -0.03em; }
.stat p { font-size: var(--text-sm); font-variant-numeric: tabular-nums; }
.codex-usage { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.8fr); gap: var(--space-lg); border-top: 1px solid var(--color-rule); padding-block: var(--space-lg); }
.codex-usage > .section-heading { flex-direction: column; align-items: flex-start; justify-content: center; gap: var(--space-xs); }
.codex-usage-status { font-size: var(--text-xs); }
.codex-usage-note { margin-top: var(--space-2xs); font-size: var(--text-xs); }
.codex-windows { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,200px),1fr)); gap: var(--space-md); }
.codex-window { min-width: 0; border-left: 1px solid var(--color-rule); padding-left: var(--space-lg); }
.codex-window-label { display: block; color: var(--color-muted); font-size: var(--text-sm); overflow-wrap: anywhere; }
.codex-window-value { display: block; margin-block: var(--space-xs); font-size: var(--text-3xl); line-height: 1.15; font-weight: 500; font-variant-numeric: tabular-nums; letter-spacing: -0.03em; }
.codex-remaining-label { font-size: var(--text-sm); letter-spacing: 0; color: var(--color-muted); }
.codex-window-reset { margin: 0; color: var(--color-muted); font-size: var(--text-xs); font-variant-numeric: tabular-nums; }
.codex-window-notice { margin: var(--space-xs) 0 0; color: var(--color-muted); font-size: var(--text-xs); }
.codex-window-loading { display: grid; gap: var(--space-sm); }
.codex-window-loading span { display: block; height: 12px; background: var(--color-paper-2); }
.codex-window-loading span:nth-child(2) { width: 40%; height: 32px; }
.codex-window-loading span:nth-child(3) { width: 72%; }
.codex-empty { grid-column: 1 / -1; margin: 0; color: var(--color-muted); font-size: var(--text-sm); }
@media(max-width:44rem) { .codex-usage { grid-template-columns: minmax(0,1fr); gap: var(--space-md); }.codex-usage > .section-heading { flex-direction: row; align-items: flex-start; justify-content: space-between; }.codex-usage > .section-heading > span { text-align: right; max-width: 18ch; font-size: var(--text-xs); }.codex-window { border-left: 0; padding-left: 0; } }
.monitor-grid { display: grid; grid-template-columns: minmax(0,1.8fr) minmax(0,1fr); gap: var(--space-xl); border-block: 1px solid var(--color-rule); padding-block: var(--space-lg); }
.section-heading { display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); }
.section-heading span { font-size: var(--text-sm); }
.chart-wrap { position: relative; margin: var(--space-lg) 0 var(--space-xs) var(--space-xl); height: 128px; }
#chart { width: 100%; height: 100%; overflow: visible; }
.chart-grid { stroke: var(--color-rule); stroke-width: 1; vector-effect: non-scaling-stroke; }
.chart-line { stroke: var(--color-accent); stroke-width: 2; vector-effect: non-scaling-stroke; }
.axis-max, .axis-min { position: absolute; right: calc(100% + var(--space-xs)); font-size: var(--text-xs); color: var(--color-muted); font-variant-numeric: tabular-nums; }
.axis-max { top: -8px; }.axis-min { bottom: -8px; }
#chart-empty { position: absolute; inset: 0; display: grid; place-items: center; font-size: var(--text-sm); text-align: center; }
.chart-footer { display: flex; justify-content: space-between; gap: var(--space-sm); padding-left: var(--space-xl); color: var(--color-muted); font-size: var(--text-xs); font-variant-numeric: tabular-nums; }
.checks-section { border-left: 1px solid var(--color-rule); padding-left: var(--space-xl); }
dl { margin: var(--space-md) 0 0; font-size: var(--text-sm); }
dl > div { display: flex; justify-content: space-between; gap: var(--space-md); padding-block: var(--space-sm); border-bottom: 1px solid var(--color-rule); }
dl > div:last-child { border-bottom: 0; }
dt { color: var(--color-muted); }dd { margin: 0; text-align: right; }
#projects { padding-top: var(--space-xl); scroll-margin-top: var(--space-lg); }
.projects-heading { display: flex; justify-content: space-between; gap: var(--space-lg); align-items: center; padding-bottom: var(--space-lg); }
.project-title { justify-content: flex-start; }.count { background: var(--color-paper-2); color: var(--color-ink); padding: var(--space-2xs) var(--space-xs); font-variant-numeric: tabular-nums; }
.filters { display: flex; gap: var(--space-sm); }
input,select { min-height: 44px; max-width: 100%; background: var(--color-plate); color: var(--color-ink); border: 1px solid var(--color-muted); border-radius: 0; padding: var(--space-xs) var(--space-sm); font-size: var(--text-sm); }
input:hover,select:hover { background: var(--color-paper-2); }input::placeholder { color: var(--color-muted); }
input:focus-visible,select:focus-visible { outline-offset: -3px; }
input[aria-invalid="true"] { border-color: var(--color-error); }
#search { width: 235px; }
.project-table-head,.project-row { display: grid; grid-template-columns: minmax(0,1.25fr) minmax(0,.8fr) minmax(0,1fr); column-gap: var(--space-lg); }
.project-table-head { background: var(--color-paper-2); padding: var(--space-sm) var(--space-md); color: var(--color-muted); font-size: var(--text-sm); border-top: 2px solid var(--color-ink); }
.project-row { padding: var(--space-lg) var(--space-md); border-bottom: 1px solid var(--color-rule); align-items: start; }
.project-name { font-size: var(--text-md); font-weight: 700; letter-spacing: 0; line-height: 1.5; }
.project-description { margin-top: var(--space-2xs); font-size: var(--text-sm); color: var(--color-muted); }
.project-status { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-xs); }
.badge { padding: var(--space-2xs) var(--space-xs); background: var(--color-paper-2); color: var(--color-ink-2); font-size: var(--text-sm); display: inline-block; }
.badge.running { color: var(--color-success); background: var(--color-success-soft); }
.badge.attention { color: var(--color-error); background: var(--color-error-soft); }
.status-detail { font-size: var(--text-xs); color: var(--color-muted); overflow-wrap: anywhere; }
.project-actions { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-xs); min-width: 0; }
.action-links { display: flex; align-items: center; gap: var(--space-lg); flex-wrap: wrap; }
.action-links a { display: inline-flex; align-items: center; min-height: 44px; font-size: var(--text-sm); }
.action-links a:hover { color: var(--color-accent); }
details { width: 100%; }
summary { cursor: pointer; color: var(--color-muted); min-height: 44px; display: flex; align-items: center; gap: var(--space-xs); font-size: var(--text-sm); }
summary::before { content: '+'; color: var(--color-ink); }details[open]>summary::before { content: '−'; }
.link-form { display: grid; gap: var(--space-xs); margin-top: var(--space-xs); }
.link-form label { font-size: var(--text-sm); }
.link-form input { width: 100%; }.link-form .button { justify-self: start; }
.form-error { color: var(--color-error); min-height: 1.5em; font-size: var(--text-sm); }
.thread { padding-block: var(--space-sm); border-top: 1px solid var(--color-rule); font-size: var(--text-sm); }
.thread p { overflow-wrap: anywhere; }.thread code { font-family: var(--font-outlier); display: block; font-size: var(--text-xs); overflow-wrap: anywhere; }
.thread .text-button { min-height: 44px; }
.error-banner { background: var(--color-error-soft); color: var(--color-error); padding: var(--space-md); margin-bottom: var(--space-lg); border-left: 2px solid var(--color-error); }
.empty-state { padding: var(--space-xl) var(--space-md); }
.skeleton-row { height: 96px; border-bottom: 1px solid var(--color-rule); background: linear-gradient(90deg,var(--color-paper-2) 25%,var(--color-clear) 25%); background-size: 100% 16px; background-repeat: no-repeat; background-position: var(--space-md) center; }
footer { display: flex; justify-content: space-between; gap: var(--space-lg); padding-block: var(--space-lg) var(--space-xl); color: var(--color-muted); font-size: var(--text-xs); }
.skip-link { position: absolute; transform: translateY(-150%); background: var(--color-ink); color: var(--color-paper); padding: var(--space-md); z-index: var(--z-sticky-nav); }
.skip-link:focus { transform: translateY(0); }
.login-shell { max-width: 460px; margin: 12vh auto; padding: var(--space-lg); }
.login-shell h1 { margin-block: var(--space-xl) var(--space-lg); font-size: var(--text-3xl); }
.login-shell form { display: grid; gap: var(--space-sm); margin-top: var(--space-xl); }
.login-shell form label { font-size: var(--text-sm); }.login-note { margin-top: var(--space-lg); font-size: var(--text-xs); }
@media(max-width:60rem) { .monitor-grid { gap: var(--space-lg); grid-template-columns: minmax(0,1.3fr) minmax(0,1fr); }.checks-section { padding-left: var(--space-lg); }.refresh-group { flex-direction: column; align-items: flex-end; gap: var(--space-xs); }.stat { padding-inline: var(--space-md); }.project-table-head,.project-row { grid-template-columns: minmax(0,1fr) minmax(0,.8fr) minmax(0,1fr); gap: var(--space-md); }.chart-footer #network { display: none; } }
@media(max-width:44rem) { :root { --gutter: 20px; }.topbar-inner { min-height: 64px; gap: var(--space-xs); }.wordmark { font-size: var(--text-sm); }.wordmark svg { display: none; }nav { gap: var(--space-md); }nav a[href="#server"] { display: none; }.page-heading { align-items: flex-start; padding-block: var(--space-lg); }.page-heading h1 { font-size: var(--text-xl); }.page-heading p { max-width: 24ch; }.refresh-group>#updated { display: none; }.stats { grid-template-columns: repeat(2,minmax(0,1fr)); padding: 0; }.stat { padding: var(--space-lg) var(--space-md); }.stat:nth-child(odd) { border-left: 0; padding-left: 0; }.stat:nth-child(even) { padding-right: 0; }.stat:nth-child(n+3) { border-top: 1px solid var(--color-rule); }.stat-value { font-size: var(--text-2xl); }.stat h2 { font-size: var(--text-sm); }.stat p { font-size: var(--text-xs); }.monitor-grid { grid-template-columns: minmax(0,1fr); }.checks-section { border-left: 0; border-top: 1px solid var(--color-rule); padding-left: 0; padding-top: var(--space-lg); }.projects-heading { flex-direction: column; align-items: stretch; gap: var(--space-md); }.filters { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); }.filters input { width: 100%; }.filters select { padding-inline: var(--space-xs); }.project-table-head { display: none; }.project-row { grid-template-columns: minmax(0,1fr) auto; padding: var(--space-lg) 0; border-top: 0; }.project-row:first-of-type { border-top: 2px solid var(--color-ink); }.project-actions { grid-column: 1 / -1; }.project-status { max-width: 140px; }.project-description { font-size: var(--text-xs); }footer { flex-direction: column; gap: var(--space-xs); }.chart-wrap { height: 108px; }.section-heading h2 { font-size: var(--text-md); } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior: auto; transition: none; animation: none; } }
