/* Hermes Remote — flat pastel interface, intentionally dependency-free. */
:root {
  --canvas: #f7f4ec;
  --surface: #fffdf8;
  --surface-soft: #f1eee4;
  --ink: #24322d;
  --muted: #69736e;
  --line: #d9ded7;
  --line-strong: #bcc8c0;
  --mint: #ccebdc;
  --mint-strong: #23654f;
  --peach: #f8d8c7;
  --peach-strong: #8e472d;
  --lilac: #e3dcf4;
  --lilac-strong: #59477c;
  --sky: #d7e9f2;
  --sky-strong: #315e73;
  --lemon: #f5e8ab;
  --lemon-strong: #6f5a0f;
  --rose: #f4d1d4;
  --rose-strong: #8a343f;
  --offline: #dadbd6;
  --focus: #235f92;
  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 22px;
  --font-ui: "Aptos", "Segoe UI Variable", "Segoe UI", sans-serif;
  --font-display: "Avenir Next", "Century Gothic", "Trebuchet MS", sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { min-width: 320px; scroll-behavior: smooth; }
body {
  margin: 0;
  min-height: 100vh;
  background: var(--canvas);
  color: var(--ink);
  font-family: var(--font-ui);
  font-size: 16px;
  line-height: 1.5;
}
button, input, textarea, select { font: inherit; }
button, select { cursor: pointer; }
button:disabled, select:disabled, textarea:disabled, input:disabled { cursor: not-allowed; opacity: .58; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 {
  color: var(--ink);
  font-family: var(--font-display);
  line-height: 1.15;
  text-wrap: balance;
}
h1 { margin-bottom: .55rem; font-size: clamp(1.65rem, 3vw, 2.35rem); letter-spacing: -.035em; }
h2 { margin-bottom: 0; font-size: clamp(1.35rem, 2vw, 1.7rem); letter-spacing: -.025em; }
h3 { margin-bottom: .35rem; font-size: 1rem; }

[hidden] { display: none !important; }
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.skip-link {
  position: fixed;
  z-index: 100;
  left: 1rem;
  top: 1rem;
  padding: .7rem 1rem;
  background: var(--ink);
  color: #fff;
  border-radius: var(--radius-sm);
  transform: translateY(-180%);
}
.skip-link:focus { transform: translateY(0); }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }

.brand {
  display: inline-flex;
  align-items: center;
  gap: .7rem;
  color: var(--ink);
  font-family: var(--font-display);
  font-weight: 800;
  letter-spacing: -.025em;
  text-decoration: none;
}
.brand-mark {
  display: grid;
  width: 2.25rem;
  height: 2.25rem;
  place-items: center;
  border: 2px solid var(--ink);
  border-radius: 10px 10px 4px 10px;
  background: var(--lemon);
  font-size: 1.05rem;
}
.eyebrow {
  margin: 0 0 .35rem;
  color: var(--muted);
  font-size: .73rem;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.muted { color: var(--muted); }

.login-view {
  display: grid;
  min-height: 100vh;
  padding: clamp(1rem, 5vw, 4rem);
  place-items: center;
  background-color: var(--canvas);
}
.login-card {
  width: min(100%, 31rem);
  padding: clamp(1.6rem, 5vw, 3.2rem);
  border: 2px solid var(--ink);
  border-radius: var(--radius-lg);
  background: var(--surface);
}
.brand--login { margin-bottom: clamp(2.5rem, 8vw, 4.5rem); }
.login-intro { max-width: 34ch; margin-bottom: 2rem; color: var(--muted); font-size: 1.05rem; }
.login-note { margin: 1.5rem 0 0; color: var(--muted); font-size: .82rem; text-align: center; }

.stack-form, .prompt-form { display: grid; gap: 1.1rem; }
.field { display: grid; gap: .45rem; }
.field label { color: var(--ink); font-size: .87rem; font-weight: 750; }
.field-hint { color: var(--muted); font-size: .76rem; }
.optional { color: var(--muted); font-size: .73rem; font-weight: 600; }
input, textarea, select {
  width: 100%;
  min-height: 46px;
  border: 1.5px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--ink);
}
input, textarea { padding: .75rem .85rem; }
select { padding: .65rem 2.25rem .65rem .8rem; }
textarea { min-height: 8.5rem; resize: vertical; line-height: 1.5; }
input:hover, textarea:hover, select:hover { border-color: var(--muted); }
input:focus, textarea:focus, select:focus { border-color: var(--focus); }
.field-meta { display: flex; justify-content: space-between; gap: 1rem; color: var(--muted); font-size: .78rem; }
.form-error { margin: 0; padding: .7rem .8rem; border-radius: var(--radius-sm); background: var(--rose); color: var(--rose-strong); font-weight: 700; }

.button, .icon-button, .filter-button {
  min-height: 44px;
  border: 1.5px solid transparent;
  border-radius: var(--radius-sm);
  font-weight: 750;
}
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .85rem;
  padding: .7rem 1rem;
}
.button--wide { width: 100%; justify-content: space-between; }
.button--primary { border-color: var(--ink); background: var(--ink); color: #fff; }
.button--primary:hover { background: var(--mint-strong); }
.button--quiet { border-color: var(--line-strong); background: var(--surface); color: var(--ink); }
.button--quiet:hover, .icon-button:hover { background: var(--surface-soft); }
.button--danger { border-color: var(--rose-strong); background: var(--rose); color: var(--rose-strong); }
.button--danger:hover { background: #efbdc2; }
.icon-button {
  display: grid;
  width: 44px;
  padding: 0;
  place-items: center;
  border-color: var(--line-strong);
  background: var(--surface);
  color: var(--ink);
  font-size: 1.25rem;
}

.app-shell { min-height: 100vh; }
.topbar {
  position: sticky;
  z-index: 20;
  top: 0;
  display: grid;
  grid-template-columns: minmax(12rem, 1fr) minmax(16rem, 28rem) minmax(12rem, 1fr);
  align-items: center;
  gap: 1.25rem;
  min-height: 78px;
  padding: .8rem clamp(1rem, 3vw, 2.5rem);
  border-bottom: 1.5px solid var(--line);
  background: var(--canvas);
}
.computer-control { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: .7rem; }
.computer-control > label { font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.select-wrap { position: relative; }
.select-wrap select { padding-left: 2rem; background: var(--surface); font-weight: 700; }
.status-dot {
  display: inline-block;
  width: .65rem;
  height: .65rem;
  border: 1.5px solid currentColor;
  border-radius: 50%;
  background: var(--offline);
  color: #777d79;
}
.select-wrap .status-dot { position: absolute; z-index: 1; left: .75rem; top: 50%; transform: translateY(-50%); pointer-events: none; }
.status-dot--online { background: #72bf99; color: var(--mint-strong); }
.status-dot--working { background: #e3bd42; color: var(--lemon-strong); }
.status-dot--offline { background: var(--offline); color: #777d79; }
.topbar-actions { display: flex; align-items: center; justify-content: flex-end; gap: .55rem; }
.session-name { overflow: hidden; color: var(--muted); font-size: .84rem; text-overflow: ellipsis; white-space: nowrap; }

.workspace {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(23rem, 31rem);
  align-items: start;
  gap: clamp(1rem, 2vw, 2rem);
  width: min(100%, 1540px);
  margin: 0 auto;
  padding: clamp(1rem, 3vw, 2.5rem);
}
.workspace-primary { display: grid; min-width: 0; gap: clamp(1.5rem, 3vw, 2.6rem); }
.enrollment-panel { padding: clamp(1.1rem, 3vw, 1.7rem); border: 2px solid var(--ink); border-radius: var(--radius-lg); background: var(--sky); }
.enrollment-grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: .8rem; }
.enrollment-result { display: grid; gap: .75rem; margin-top: 1rem; padding: 1rem; border: 1.5px solid var(--sky-strong); border-radius: var(--radius-md); background: var(--surface); }
.enrollment-result p { margin: 0; }
.enrollment-code-row { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .75rem; }
.enrollment-code { font-family: ui-monospace, "Cascadia Mono", monospace; font-size: clamp(1.35rem, 4vw, 2rem); letter-spacing: .12em; }
.enrollment-result details { border-top: 1px solid var(--line); padding-top: .65rem; }
.enrollment-result summary { color: var(--sky-strong); font-weight: 800; cursor: pointer; }
.enrollment-result pre { overflow: auto; margin: .65rem 0 0; padding: .75rem; border-radius: var(--radius-sm); background: var(--surface-soft); font-size: .72rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.section { min-width: 0; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.section-heading--compact { align-items: center; }
.count-badge {
  flex: 0 0 auto;
  padding: .34rem .65rem;
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  color: var(--muted);
  font-size: .78rem;
  font-weight: 750;
}

.workers-list { display: flex; gap: .75rem; overflow-x: auto; padding: .15rem .1rem .35rem; scroll-snap-type: x proximity; }
.worker-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .75rem;
  min-width: min(22rem, 85vw);
  padding: .9rem;
  border: 1.5px solid var(--line-strong);
  border-radius: var(--radius-md);
  background: var(--lemon);
  color: var(--ink);
  font: inherit;
  text-align: left;
  scroll-snap-align: start;
}
.worker-card .worker-copy { min-width: 0; }
.worker-card h3, .worker-card p { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.worker-card p { margin: 0; color: var(--lemon-strong); font-size: .82rem; }
.worker-card .elapsed { color: var(--lemon-strong); }

.composer-card {
  padding: clamp(1.2rem, 3vw, 2rem);
  border: 2px solid var(--ink);
  border-radius: var(--radius-lg);
  background: var(--surface);
}
.prompt-form { margin-top: 1.25rem; }
.composer-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.upload-control { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .65rem; }
.upload-control input[type="file"] { min-height: 46px; padding: .42rem; }
.upload-control input[type="file"]::file-selector-button {
  min-height: 32px;
  margin-right: .65rem;
  border: 1px solid var(--line-strong);
  border-radius: 6px;
  background: var(--sky);
  color: var(--sky-strong);
  font: inherit;
  font-weight: 750;
}
.composer-actions { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.composer-actions p { max-width: 33ch; margin: 0; color: var(--muted); font-size: .82rem; }

.chip {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  min-height: 28px;
  padding: .25rem .62rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: .74rem;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
}
.chip--online, .chip--completed { background: var(--mint); color: var(--mint-strong); }
.chip--working, .chip--running, .chip--claimed { background: var(--lemon); color: var(--lemon-strong); }
.chip--offline, .chip--neutral, .chip--cancelled { background: var(--offline); color: #555e59; }
.chip--queued { background: var(--sky); color: var(--sky-strong); }
.chip--error, .chip--failed { background: var(--rose); color: var(--rose-strong); }

.project-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }
.project-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: .85rem;
  min-width: 0;
  padding: 1rem;
  border: 1.5px solid var(--line-strong);
  border-radius: var(--radius-md);
  background: var(--surface);
}
.project-card:nth-child(4n+1) .project-letter { background: var(--mint); color: var(--mint-strong); }
.project-card:nth-child(4n+2) .project-letter { background: var(--lilac); color: var(--lilac-strong); }
.project-card:nth-child(4n+3) .project-letter { background: var(--peach); color: var(--peach-strong); }
.project-card:nth-child(4n+4) .project-letter { background: var(--sky); color: var(--sky-strong); }
.project-letter { display: grid; width: 2.6rem; height: 2.6rem; place-items: center; border-radius: 9px; font-family: var(--font-display); font-weight: 850; }
.project-copy { min-width: 0; }
.project-copy h3 { overflow: hidden; margin: .05rem 0 .25rem; text-overflow: ellipsis; white-space: nowrap; }
.project-path { overflow: hidden; margin: 0; color: var(--muted); font-family: ui-monospace, "Cascadia Mono", monospace; font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }

.segmented-control { display: inline-flex; padding: 3px; border: 1px solid var(--line-strong); border-radius: 10px; background: var(--surface-soft); }
.filter-button { min-height: 34px; padding: .35rem .7rem; background: transparent; color: var(--muted); font-size: .78rem; }
.filter-button.is-active { background: var(--surface); color: var(--ink); }
.jobs-list { display: grid; gap: .65rem; }
.job-button {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .9rem;
  width: 100%;
  min-height: 68px;
  padding: .85rem 1rem;
  border: 1.5px solid var(--line-strong);
  border-radius: var(--radius-md);
  background: var(--surface);
  color: var(--ink);
  text-align: left;
}
.job-button:hover { border-color: var(--ink); }
.job-button[aria-current="true"] { border-color: var(--focus); background: var(--sky); }
.job-main { min-width: 0; }
.job-title { display: block; overflow: hidden; margin-bottom: .3rem; font-weight: 780; text-overflow: ellipsis; white-space: nowrap; }
.job-meta { display: flex; flex-wrap: wrap; gap: .3rem .75rem; color: var(--muted); font-size: .76rem; }
.job-side { display: grid; justify-items: end; align-content: space-between; gap: .45rem; }
.job-time { color: var(--muted); font-size: .73rem; white-space: nowrap; }

.live-panel {
  position: sticky;
  top: 102px;
  display: flex;
  flex-direction: column;
  min-height: calc(100vh - 126px);
  max-height: calc(100vh - 126px);
  overflow: hidden;
  border: 2px solid var(--ink);
  border-radius: var(--radius-lg);
  background: var(--surface);
}
.live-panel-header { display: flex; align-items: center; justify-content: space-between; padding: 1.15rem 1.2rem .85rem; border-bottom: 1.5px solid var(--line); }
.live-content { display: flex; min-height: 0; flex: 1; flex-direction: column; overflow: hidden; }
.live-summary { padding: 1.1rem 1.2rem; background: var(--lilac); }
.live-summary h3 { margin: .85rem 0 .35rem; font-size: 1.15rem; }
.live-summary p { margin: 0; font-size: .8rem; }
.live-title-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.elapsed { font-family: ui-monospace, "Cascadia Mono", monospace; font-size: .78rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.progress-steps { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; padding: 1rem 1.2rem; border-bottom: 1.5px solid var(--line); list-style: none; }
.progress-steps li { position: relative; display: grid; justify-items: center; gap: .35rem; color: var(--muted); font-size: .68rem; text-align: center; }
.progress-steps li:not(:last-child)::after { position: absolute; z-index: 0; top: 6px; left: calc(50% + 8px); width: calc(100% - 16px); height: 2px; background: var(--line); content: ""; }
.progress-steps li span { z-index: 1; width: 14px; height: 14px; border: 2px solid var(--line-strong); border-radius: 50%; background: var(--surface); }
.progress-steps li.is-complete, .progress-steps li.is-current { color: var(--ink); }
.progress-steps li.is-complete span { border-color: var(--mint-strong); background: var(--mint); }
.progress-steps li.is-current span { border-color: var(--lemon-strong); background: var(--lemon); }
.progress-steps li.is-error span { border-color: var(--rose-strong); background: var(--rose); }
.event-heading { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.2rem .55rem; }
.event-heading h3 { margin: 0; }
.events-list { display: grid; min-height: 7rem; flex: 1; align-content: start; gap: .6rem; overflow-y: auto; padding: .2rem 1.2rem 1rem; }
.event-card { padding: .8rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface-soft); }
.event-card--tool { background: var(--sky); }
.event-card--agent { background: var(--peach); }
.event-card--thinking { background: var(--lilac); }
.event-card--message { background: var(--mint); }
.event-card--error { background: var(--rose); }
.event-topline { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .35rem; }
.event-kind { font-size: .68rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.event-time { color: var(--muted); font-family: ui-monospace, "Cascadia Mono", monospace; font-size: .68rem; }
.event-card p { margin: 0; font-size: .82rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.event-card details { margin-top: .6rem; border-top: 1px solid rgba(36, 50, 45, .18); padding-top: .5rem; }
.event-card summary { color: var(--muted); font-size: .74rem; font-weight: 750; cursor: pointer; }
.technical-text { max-height: 16rem; overflow: auto; margin: .5rem 0 0; padding: .65rem; border-radius: 6px; background: rgba(255, 255, 255, .55); font-family: ui-monospace, "Cascadia Mono", monospace; font-size: .7rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.live-result { max-height: 38vh; overflow: auto; padding: 1rem 1.2rem; border-top: 1.5px solid var(--line); background: var(--mint); }
.live-result h3 { margin-bottom: .55rem; }
.live-result pre { margin: 0; font: inherit; font-size: .84rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.live-footer { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .85rem 1.2rem; border-top: 1.5px solid var(--line); background: var(--surface); }
.live-footer p { max-width: 21ch; margin: 0; font-size: .72rem; }
.empty-state { display: grid; min-height: 9rem; padding: 1.5rem; place-items: center; align-content: center; border: 1.5px dashed var(--line-strong); border-radius: var(--radius-md); color: var(--muted); text-align: center; }
.empty-state h3 { margin: .5rem 0 .3rem; }
.empty-state p { max-width: 38ch; margin: 0; font-size: .84rem; }
.empty-state--live { min-height: 0; flex: 1; margin: 1.2rem; border: 0; background: var(--surface-soft); }
.empty-symbol { display: grid; width: 2.8rem; height: 2.8rem; place-items: center; border: 1.5px solid var(--line-strong); border-radius: 50%; color: var(--ink); font-size: 1.35rem; }

@media (max-width: 980px) {
  .topbar { grid-template-columns: auto minmax(13rem, 1fr) auto; }
  .session-name { display: none; }
  .workspace { grid-template-columns: minmax(0, 1fr); }
  .live-panel { position: relative; top: auto; min-height: min(46rem, calc(100vh - 2rem)); max-height: none; }
}

@media (max-width: 680px) {
  .topbar { position: relative; grid-template-columns: 1fr auto; gap: .65rem; padding: .75rem 1rem; }
  .brand-name { display: none; }
  .computer-control { grid-column: 1 / -1; grid-row: 2; grid-template-columns: auto minmax(0, 1fr); }
  .topbar-actions { grid-column: 2; grid-row: 1; }
  .topbar-actions .button { width: 44px; overflow: hidden; padding: 0; color: transparent; font-size: 0; }
  .topbar-actions .button::before { display: block; color: var(--ink); content: "↪"; font-size: 1.15rem; line-height: 1; }
  #add-computer-button::before { content: "+"; }
  #logout-button::before { content: "↪"; }
  .workspace { padding: 1rem; }
  .project-grid { grid-template-columns: minmax(0, 1fr); }
  .section-heading { align-items: flex-start; }
  .section-heading:has(.segmented-control) { display: grid; }
  .segmented-control { width: 100%; }
  .filter-button { flex: 1; }
  .composer-grid { grid-template-columns: minmax(0, 1fr); }
  .enrollment-grid { grid-template-columns: minmax(0, 1fr); }
  .composer-actions { align-items: stretch; flex-direction: column; }
  .composer-actions .button { width: 100%; justify-content: space-between; }
  .live-panel { min-height: calc(100svh - 2rem); }
  .live-close { display: grid; }
}

@media (max-width: 430px) {
  .composer-card { padding: 1rem; border-radius: var(--radius-md); }
  .section-heading--compact { align-items: flex-start; flex-direction: column; }
  .job-button { grid-template-columns: minmax(0, 1fr); }
  .job-side { grid-template-columns: auto 1fr; justify-items: start; }
  .job-time { justify-self: end; }
  .live-footer { align-items: stretch; flex-direction: column; }
  .live-footer p { max-width: none; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}

@media (forced-colors: active) {
  .status-dot, .chip, .progress-steps li span { forced-color-adjust: none; }
}
