/* ============================================================
   Central de Operações — guaxi.dev
   Design system: getdesign.md/design-md/cursor/DESIGN.md (cópia em design/DESIGN.md)
   Canvas creme · ink quente · display 400 com tracking negativo
   Hairlines (sem sombras) · laranja escasso · JetBrains Mono em código
   ============================================================ */

:root {
  /* — colors — */
  --primary: #f54e00;
  --primary-active: #d04200;
  --ink: #26251e;
  --body: #5a5852;
  --body-strong: #26251e;
  /* muted/muted-soft escurecidos vs. spec (AA 4.5:1 no canvas creme e no branco) */
  --muted: #706d64;
  --muted-soft: #75726a;
  --hairline: #e6e5e0;
  --hairline-soft: #efeee8;
  --hairline-strong: #cfcdc4;
  --canvas: #f7f7f4;
  --canvas-soft: #fafaf7;
  --surface-card: #ffffff;
  --surface-strong: #e6e5e0;
  --on-primary: #ffffff;
  --timeline-thinking: #dfa88f;
  --timeline-grep: #9fc9a2;
  --timeline-read: #9fbbe0;
  --timeline-edit: #c0a8dd;
  --timeline-done: #c08532;
  --semantic-error: #cf2d56;
  --semantic-success: #1a7d59; /* escurecido vs. spec #1f8a65 para AA 4.5:1 */

  /* — type — */
  --font-text: 'Inter', 'CursorGothic', system-ui, 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-mono: 'JetBrains Mono', 'Fira Code', ui-monospace, monospace;

  /* — radius — */
  --r-xs: 4px;
  --r-sm: 6px;
  --r-md: 8px;
  --r-lg: 12px;
  --r-xl: 16px;
  --r-pill: 9999px;

  /* — spacing — */
  --s-xxs: 4px;
  --s-xs: 8px;
  --s-sm: 12px;
  --s-base: 16px;
  --s-md: 20px;
  --s-lg: 24px;
  --s-xl: 32px;
  --s-xxl: 48px;
  --s-section: 80px;

  --container: 1200px;
}

/* — base — */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }

body {
  background: var(--canvas);
  color: var(--body);
  font-family: var(--font-text);
  font-size: 16px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  text-wrap: pretty;
}

img, svg { max-width: 100%; display: block; }

.mono { font-family: var(--font-mono); }

.container {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--s-lg);
}

/* foco visível e consistente */
:focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
  border-radius: var(--r-xs);
}

.skip-link {
  position: absolute;
  left: -9999px;
  top: var(--s-xs);
  background: var(--surface-card);
  color: var(--ink);
  border: 1px solid var(--hairline-strong);
  border-radius: var(--r-md);
  padding: var(--s-sm) var(--s-base);
  z-index: 200;
}
.skip-link:focus { left: var(--s-lg); }

/* — tipografia do sistema — */
.display-lg {
  font-size: clamp(28px, 4.6vw, 36px);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: -0.72px;
  color: var(--ink);
}
.display-md {
  font-size: clamp(22px, 3vw, 26px);
  font-weight: 400;
  line-height: 1.25;
  letter-spacing: -0.325px;
  color: var(--ink);
}
.title-sm {
  font-size: 16px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--ink);
}
.body-lg {
  font-size: clamp(16px, 1.5vw, 18px);
  line-height: 1.6;
  max-width: 62ch;
}
.section-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.88px;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: var(--s-sm);
}

/* — top nav — */
.top-nav {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--canvas);
  border-bottom: 1px solid var(--hairline);
  height: 64px;
}
.nav-inner {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--s-lg);
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-lg);
}
.wordmark {
  font-weight: 600;
  font-size: 15px;
  color: var(--ink);
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: 7px;
  white-space: nowrap;
}
.wordmark-dot {
  width: 8px;
  height: 8px;
  border-radius: var(--r-pill);
  background: var(--primary);
  display: inline-block;
}
.wordmark-tag {
  font-weight: 400;
  font-size: 13px;
  color: var(--muted);
  padding-left: var(--s-sm);
  border-left: 1px solid var(--hairline);
  overflow: hidden;
  text-overflow: ellipsis;
}
.nav-links {
  display: flex;
  gap: var(--s-lg);
  align-items: center;
  list-style: none;
}
.nav-links a {
  color: var(--ink);
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
  padding: 8px 0;
}
.nav-links a:hover { text-decoration: underline; text-underline-offset: 4px; }
.nav-side {
  display: flex;
  align-items: center;
  gap: var(--s-md);
}
.nav-clock {
  font-size: 13px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 44px;
  height: 44px;
  padding: 10px;
  background: transparent;
  border: 1px solid var(--hairline);
  border-radius: var(--r-md);
  cursor: pointer;
}
.nav-toggle span {
  display: block;
  height: 2px;
  width: 100%;
  background: var(--ink);
  border-radius: var(--r-xs);
  transition: transform 0.15s ease, opacity 0.15s ease;
}
.top-nav.nav-open .nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.top-nav.nav-open .nav-toggle span:nth-child(2) { opacity: 0; }
.top-nav.nav-open .nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* — boas-vindas — */
.welcome-band { padding: var(--s-section) 0; }
.welcome-grid {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(280px, 4fr);
  gap: var(--s-xxl);
  align-items: start;
}
.welcome-copy .display-lg { margin-bottom: var(--s-lg); }
.welcome-copy .body-lg { margin-bottom: var(--s-xl); }
.welcome-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-md);
}

/* — botões — */
.btn-secondary {
  display: inline-flex;
  align-items: center;
  gap: var(--s-xs);
  background: var(--surface-card);
  color: var(--ink);
  border: 1px solid var(--hairline-strong);
  border-radius: var(--r-md);
  padding: 9px 17px;
  min-height: 40px;
  font-family: var(--font-text);
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
  cursor: pointer;
}
.btn-secondary:hover { background: var(--canvas-soft); }
.btn-secondary:active { background: var(--surface-strong); }
.btn-text {
  color: var(--ink);
  font-size: 14px;
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-color: var(--hairline-strong);
}
.btn-text:hover { text-decoration-color: var(--ink); }
.btn-sm { padding: 6px 12px; min-height: 32px; font-size: 13px; }
/* — botão primário (spec: laranja, só em CTAs principais como Entrar) — */
.btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s-xs);
  background: var(--primary);
  color: var(--on-primary);
  border: 1px solid var(--primary);
  border-radius: var(--r-md);
  padding: 10px 18px;
  min-height: 40px;
  font-family: var(--font-text);
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
  cursor: pointer;
}
.btn-primary:hover { background: var(--primary-active); border-color: var(--primary-active); }
.btn-primary:disabled { opacity: 0.6; cursor: wait; }

/* — tela de login (só tokens do spec) — */
.login-wrap {
  max-width: 560px;
  margin: 0 auto;
}
.login-card .display-md { margin-bottom: var(--s-sm); }
.login-card .band-desc { margin-bottom: var(--s-lg); }
.login-card .caption {
  display: block;
  margin: var(--s-base) 0 var(--s-xs);
}
.login-card .text-input { font-family: var(--font-text); font-size: 14px; }
.login-actions { margin-top: var(--s-lg); }
.login-actions .btn-primary { width: 100%; }
.login-card .alert-error { margin-top: var(--s-base); }
.login-card .status-note { margin-top: var(--s-lg); }

/* — aprovação de rascunhos (só tokens do spec) — */
.approval-note {
  width: 100%;
  box-sizing: border-box;
  margin-top: var(--s-sm);
  background: var(--canvas);
  color: var(--ink);
  border: 1px solid var(--hairline-strong);
  border-radius: var(--r-md);
  padding: 9px 12px;
  font-family: var(--font-text);
  font-size: 14px;
  resize: vertical;
}
.approval-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-md);
  margin-top: var(--s-md);
}
#approval-status { margin-top: var(--s-sm); }

/* — card de status — */
.status-card {
  background: var(--surface-card);
  border: 1px solid var(--hairline);
  border-radius: var(--r-lg);
  padding: var(--s-lg);
}
.status-list { display: grid; gap: var(--s-sm); }
.status-list > div {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--s-base);
  padding-bottom: var(--s-sm);
  border-bottom: 1px solid var(--hairline-soft);
}
.status-list > div:last-child { border-bottom: 0; padding-bottom: 0; }
.status-list dt {
  font-size: 14px;
  color: var(--body);
}
.status-list dd {
  font-size: 13px;
  color: var(--ink);
  text-align: right;
}
.status-ok {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  color: var(--semantic-success);
}
.status-ok::before {
  content: '';
  width: 7px;
  height: 7px;
  border-radius: var(--r-pill);
  background: var(--semantic-success);
}
.status-note {
  margin-top: var(--s-base);
  font-size: 13px;
  line-height: 1.5;
  color: var(--muted);
}

/* — bandas de seção — */
.band { padding: var(--s-section) 0; }
.band-soft {
  background: var(--canvas-soft);
  border-top: 1px solid var(--hairline-soft);
  border-bottom: 1px solid var(--hairline-soft);
}
.band .display-md { margin-bottom: var(--s-sm); }
.band-desc {
  max-width: 62ch;
  margin-bottom: var(--s-xl);
}

/* — grid de módulos — */
.module-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s-base);
}
.module-card {
  background: var(--surface-card);
  border: 1px solid var(--hairline);
  border-radius: var(--r-lg);
  padding: var(--s-lg);
  display: flex;
  flex-direction: column;
  gap: var(--s-sm);
}
.module-card:hover { border-color: var(--hairline-strong); }
.module-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-sm);
}
.badge-pill {
  display: inline-flex;
  align-items: center;
  background: var(--surface-strong);
  color: var(--ink);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.88px;
  text-transform: uppercase;
  border-radius: var(--r-pill);
  padding: 4px 10px;
}
.module-desc {
  font-size: 14px;
  line-height: 1.5;
  color: var(--body);
}
.module-empty {
  margin-top: auto;
  padding-top: var(--s-sm);
  border-top: 1px solid var(--hairline-soft);
  font-size: 12px;
  color: var(--muted-soft);
}
.module-items {
  list-style: none;
  margin-top: auto;
  padding-top: var(--s-sm);
  border-top: 1px solid var(--hairline-soft);
  display: grid;
  gap: var(--s-sm);
}
.module-items a {
  color: var(--ink);
  font-size: 14px;
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-color: var(--hairline-strong);
}
.module-items a:hover { text-decoration-color: var(--ink); }
.module-item-desc {
  display: block;
  font-size: 13px;
  color: var(--muted);
  margin-top: 2px;
}
.loading-note {
  color: var(--muted); /* AA no canvas (muted-soft fica reservado a fundos brancos) */
  font-size: 13px;
}

/* — erro de carregamento — */
.alert-error[hidden] {
  display: none;
}
.alert-error {
  margin-top: var(--s-lg);
  background: var(--surface-card);
  border: 1px solid var(--semantic-error);
  border-radius: var(--r-lg);
  padding: var(--s-base) var(--s-lg);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-base);
  color: var(--ink);
  font-size: 14px;
}
.alert-error .mono { color: var(--semantic-error); font-size: 13px; }

/* — linha do tempo de atividades — */
.activity-list { list-style: none; }
.activity-item {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--s-sm) var(--s-base);
  padding: var(--s-base) 0;
  border-bottom: 1px solid var(--hairline-soft);
}
.activity-item:first-child { padding-top: 0; }
.activity-title {
  color: var(--ink);
  font-size: 16px;
  line-height: 1.5;
}
.activity-time {
  margin-left: auto;
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* — pills de estágio (pastéis: só na timeline do agente) — */
.pill {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.88px;
  text-transform: uppercase;
  border-radius: var(--r-pill);
  padding: 4px 10px;
  color: var(--ink);
  white-space: nowrap;
}
.pill-thinking { background: var(--timeline-thinking); }
.pill-grep     { background: var(--timeline-done); }
.pill-read     { background: var(--timeline-read); }
.pill-edit     { background: var(--timeline-edit); }
.pill-done     { background: var(--timeline-grep); }

/* — footer — */
.footer {
  border-top: 1px solid var(--hairline);
  padding: var(--s-xxl) 0;
}.footer-grid {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-base);
}
.wordmark-footer {
  font-weight: 600;
  font-size: 15px;
  color: var(--ink);
  display: flex;
  align-items: center;
  gap: 7px;
}
.footer-tag {
  font-size: 14px;
  color: var(--muted);
  margin-top: var(--s-xxs);
}
.footer-meta {
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

/* — feed de publicações (v2: busca + filtros + ordenação) — */
.visually-hidden {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.text-input {
  background: var(--surface-card);
  color: var(--ink);
  border: 1px solid var(--hairline-strong);
  border-radius: var(--r-md);
  padding: 12px 16px;
  min-height: 44px;
  font-family: var(--font-mono);
  font-size: 13px;
  width: 100%;
}
.text-input::placeholder { color: var(--muted-soft); }
.feed-controls {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 240px;
  gap: var(--s-base);
  margin-bottom: var(--s-base);
}
.filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-xs);
  margin-bottom: var(--s-lg);
}
.filter-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--s-xs);
  background: var(--surface-card);
  color: var(--ink);
  border: 1px solid var(--hairline);
  border-radius: var(--r-pill);
  padding: 6px 12px;
  min-height: 32px;
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.88px;
  text-transform: uppercase;
  cursor: pointer;
}
.filter-chip:hover { border-color: var(--hairline-strong); }
.filter-chip.active {
  background: var(--ink);
  color: var(--canvas);
  border-color: var(--ink);
}
.chip-count {
  font-weight: 400;
  opacity: 0.75;
}
#feed-count { margin-bottom: var(--s-base); }
.feed-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s-base);
}
.feed-card {
  position: relative;
  background: var(--surface-card);
  border: 1px solid var(--hairline);
  border-radius: var(--r-lg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.feed-card:hover { border-color: var(--hairline-strong); }
.feed-card-link {
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: var(--r-lg);
}
.feed-thumb {
  display: block;
  border-bottom: 1px solid var(--hairline-soft);
  background: var(--canvas-soft);
  aspect-ratio: 16 / 9;
  overflow: hidden;
}
.feed-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.feed-card-body {
  padding: var(--s-lg);
  display: flex;
  flex-direction: column;
  gap: var(--s-sm);
  flex: 1;
}
.feed-card-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-sm);
}
.feed-time {
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
/* — status de conteúdos (tons da identidade) — */
.status-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.88px;
  text-transform: uppercase;
  border-radius: var(--r-pill);
  padding: 3px 10px;
  margin-top: var(--s-xs);
}
.status-pill::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}
.status-publicado {
  background: #e2efe7;
  color: var(--semantic-success);
}
.status-recusado {
  background: #f8e2e8;
  color: var(--semantic-error);
}
.status-em-aprovacao {
  background: #f4e9c9;
  color: #8a6100;
}
.feed-desc {
  font-size: 14px;
  line-height: 1.5;
  color: var(--body);
}
.feed-meta, .pub-meta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-xs) var(--s-sm);
  font-size: 12px;
  color: var(--muted);
}
.pub-meta-sep { opacity: 0.6; }

/* — monitoria de rotinas (v2) — */
.jobs-panel {
  display: grid;
  gap: var(--s-sm);
}
.job-row {
  background: var(--surface-card);
  border: 1px solid var(--hairline);
  border-radius: var(--r-lg);
  padding: var(--s-base) var(--s-lg);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--s-xs) var(--s-base);
  align-items: center;
}
.job-main {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--s-xs) var(--s-base);
}
.job-name {
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
}
.job-schedule { font-size: 12px; color: var(--muted); }
.job-status {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.88px;
  text-transform: uppercase;
  border-radius: var(--r-pill);
  padding: 4px 10px;
  justify-self: end;
}
.job-ok { background: var(--surface-strong); color: var(--ink); }
.job-ok .job-dot { background: var(--semantic-success); }
.job-fail { background: var(--surface-strong); color: var(--ink); }
.job-fail .job-dot { background: var(--semantic-error); }
.job-pending { background: var(--surface-strong); color: var(--ink); }
.job-pending .job-dot { background: var(--timeline-done); }
.job-dot {
  width: 7px;
  height: 7px;
  border-radius: var(--r-pill);
  display: inline-block;
}
.job-last {
  grid-column: 1 / -1;
  font-size: 12px;
  color: var(--muted);
  display: grid;
  gap: 2px;
}
.job-result { color: var(--body); }
.status-fail { color: var(--semantic-error); font-size: 13px; }
.status-pending { color: var(--muted); font-size: 13px; }

/* — página de publicação (pub.html, v2) — */
.pub-wrap { max-width: 800px; }
.pub-wrap .display-lg { margin-bottom: var(--s-base); }
.pub-meta-row { margin-bottom: var(--s-lg); }
.pub-meta { font-size: 12px; }
.pub-body {
  display: grid;
  gap: var(--s-base);
  font-size: 16px;
  line-height: 1.6;
  color: var(--body);
  margin-bottom: var(--s-xl);
}
.pub-desc { font-size: 16px; }
.pub-media { margin-bottom: var(--s-xl); }
.pub-media .section-label { margin-bottom: var(--s-base); }
#pub-media-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--s-base);
}
.pub-media-item {
  background: var(--surface-card);
  border: 1px solid var(--hairline);
  border-radius: var(--r-lg);
  overflow: hidden;
}
.pub-media-item img, .pub-media-item video { width: 100%; }
.pub-media-item .caption {
  padding: var(--s-sm) var(--s-base);
  font-size: 13px;
  color: var(--muted);
}
.caption { font-size: 13px; color: var(--muted); line-height: 1.4; }
.voltar { display: inline-block; margin-top: var(--s-base); }

/* — responsivo — */
@media (max-width: 1024px) {
  .welcome-grid { grid-template-columns: 1fr; gap: var(--s-xl); }
  .module-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .feed-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767.98px) {
  .nav-toggle { display: inline-flex; }
  .nav-links {
    position: absolute;
    top: 64px;
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    background: var(--surface-card);
    border-bottom: 1px solid var(--hairline);
    display: none;
  }
  .top-nav.nav-open .nav-links { display: flex; }
  .nav-links a {
    padding: 14px var(--s-lg);
    border-top: 1px solid var(--hairline-soft);
  }
  .welcome-band, .band { padding: var(--s-xxl) 0; }
  .welcome-actions { flex-direction: column; align-items: stretch; }
  .welcome-actions .btn-secondary { justify-content: center; }
}

@media (max-width: 639.98px) {
  .module-grid { grid-template-columns: 1fr; }
  .feed-grid { grid-template-columns: 1fr; }
  .feed-controls { grid-template-columns: 1fr; }
  #pub-media-grid { grid-template-columns: 1fr; }
  .job-row { grid-template-columns: 1fr; }
  .job-status { justify-self: start; }
  .wordmark-tag { display: none; }
  .activity-time { margin-left: 0; width: 100%; }
  .nav-clock { display: none; }
}

/* — movimento — */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
