/* Portal Web Awesome — Shared styles for CodeTogether AI Portal.
   All pages load this via /assets/portal-wa.css. Page-specific styles
   should be minimal or zero — add shared patterns here instead. */

/* === Spacing Scale === */
:root,
.wa-light,
.wa-dark {
  --sp-1: 4px;
  --sp-2: 6px;
  --sp-3: 8px;
  --sp-4: 10px;
  --sp-5: 12px;
  --sp-6: 14px;
  --sp-7: 16px;
  --sp-8: 20px;
  --sp-9: 24px;
  --sp-10: 32px;
  --sp-11: 48px;
}

/* === Font Scale (supplement WA's built-in 3xs..xl) === */
:root,
.wa-light,
.wa-dark {
  --wa-font-size-scale: 1;
  --wa-space-scale: 0.75;
  --wa-portal-font-4xs: 9px;
  --wa-portal-font-base: 13px;
  --wa-portal-font-heading-s: 15px;
  --wa-portal-font-heading-m: 18px;
  --wa-portal-font-heading-l: 22px;
}

/* === WA Compact Density === */
:root,
.wa-light,
.wa-dark {
  --wa-form-control-padding-block: 4px;
  --wa-form-control-padding-inline: 8px;
  --wa-form-control-height: 28px;
  --wa-form-control-value-line-height: 1.2;
  --wa-form-control-label-line-height: 1.2;
  --wa-form-control-hint-line-height: 1.25;
  --wa-form-control-toggle-size: 16px;
  --wa-form-control-border-width: 1px;
  --wa-form-control-border-radius: 4px;
  --wa-panel-border-width: 1px;
  --wa-panel-border-radius: 6px;
  --wa-shadow-s: none;
}

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

body {
  font-family: var(--wa-font-family-body);
  color: var(--wa-color-text-normal);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

body.terminal-page {
  height: 100vh;
  height: 100dvh;
  min-height: 0;
  overflow: hidden;
}

/* === Header (all pages) === */
.portal-header {
  background: var(--wa-color-surface-lowered);
  border-bottom: 1px solid var(--wa-color-surface-border);
  padding: 0 var(--sp-7);
  height: 42px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-shrink: 0;
  position: relative;
  z-index: 10;
}
.portal-header-brand {
  text-decoration: none;
  color: var(--wa-color-text-link);
  font-size: var(--wa-portal-font-base);
  font-weight: 600;
  letter-spacing: 0.03em;
}
.portal-header-actions { display: flex; align-items: center; gap: var(--sp-4); }
.portal-header-user { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); }

/* === Theme Toggle === */
.portal-theme-toggle {
  background: none;
  border: none;
  border-radius: var(--sp-1);
  padding: var(--sp-1);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--wa-color-text-quiet);
  transition: color 0.15s;
}
.portal-theme-toggle:hover { color: var(--wa-color-text-link); }
.portal-theme-toggle svg { width: 14px; height: 14px; }
.portal-theme-toggle .icon-sun { display: none; }
.portal-theme-toggle .icon-moon { display: block; }
html.wa-light .portal-theme-toggle .icon-sun { display: block; }
html.wa-light .portal-theme-toggle .icon-moon { display: none; }

/* === Page Layouts === */
.page-centered {
  flex: 1;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: var(--sp-10) var(--sp-7);
}
.page-centered wa-card { max-width: 560px; width: 100%; }
.page-centered wa-card::part(base) {
  border-left: 3px solid var(--wa-color-text-link);
}

.wrap {
  max-width: 880px;
  width: 100%;
  min-width: 0;
  margin: var(--sp-9) auto;
  padding: 0 var(--sp-7);
  display: flex;
  flex-direction: column;
  gap: var(--sp-7);
}

.portal-main {
  flex: 1;
  width: 100%;
  margin: 0 auto;
  padding: var(--sp-10) var(--sp-9);
}
.portal-main-narrow { max-width: 720px; }
.portal-main-wide { max-width: 960px; }

.portal-kicker {
  font-size: var(--wa-portal-font-base);
  color: var(--wa-color-text-quiet);
  line-height: 1.5;
}
.portal-top-note { margin-top: var(--sp-4); }
.portal-advanced-disclosure {
  margin-top: var(--sp-1);
}
.portal-advanced-disclosure > summary {
  cursor: pointer;
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-2xs);
  line-height: 1.4;
  opacity: 0.72;
}
.portal-advanced-disclosure > summary:hover {
  opacity: 1;
  color: var(--wa-color-text-link);
}
.portal-disclosure-note {
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-2xs);
  line-height: 1.45;
  margin-top: var(--sp-2);
  max-width: 760px;
}
.portal-field-note { margin-bottom: var(--sp-2); }
.portal-inline-note { margin-left: var(--sp-4); }
.portal-select-sm { min-width: 130px; }
.portal-select-md { min-width: 220px; }
.portal-select-lg { min-width: 240px; }
.portal-input-xs { width: 80px; }
.portal-error { color: var(--wa-color-danger-on-normal); }
.portal-strong { color: var(--wa-color-text-normal); }

.portal-split-header,
.portal-card-header-split {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sp-5);
  width: 100%;
  min-width: 0;
}

.portal-verified-line {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-portal-font-base);
  line-height: 1.35;
  max-width: 360px;
  text-align: right;
}
.portal-verified-line .status-dot {
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: var(--wa-color-success-on-normal);
  flex: 0 0 auto;
}
.gmail-helper-page #connection-badge {
  flex: 0 1 380px;
  display: flex;
  justify-content: flex-end;
  padding-top: 3px;
}

.portal-panel {
  padding: var(--sp-7) var(--sp-8);
  font-size: var(--wa-font-size-s);
  line-height: 1.6;
  color: var(--wa-color-text-normal);
  border: 1px solid var(--wa-color-surface-border);
  border-left: 3px solid color-mix(in srgb, var(--wa-color-text-link) 50%, var(--wa-color-surface-border));
  border-radius: var(--wa-panel-border-radius);
  background: var(--wa-color-surface-default);
}

.portal-actions-row,
.settings-actions {
  display: flex;
  gap: var(--sp-4);
  align-items: center;
  padding-top: var(--sp-5);
  margin-top: var(--sp-5);
  border-top: 1px solid var(--wa-color-surface-border);
  flex-wrap: wrap;
}
.settings-actions #run-now-btn,
.settings-actions #preview-btn {
  margin-left: var(--sp-4);
}
.settings-actions wa-button:not([variant="brand"])::part(base) {
  background: transparent;
  border-color: var(--wa-color-surface-border);
  color: var(--wa-color-text-quiet);
}
.settings-actions wa-button:not([variant="brand"])::part(base):hover {
  border-color: var(--wa-color-text-quiet);
  color: var(--wa-color-text-normal);
}

.portal-dialog-footer {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: var(--sp-3);
  width: 100%;
}
.portal-dialog-primary { font-weight: 600; }
.portal-dialog-cancel::part(base) {
  background: transparent;
  border-color: var(--wa-color-surface-border);
  color: var(--wa-color-text-quiet);
}
.portal-dialog-cancel::part(base):hover {
  border-color: var(--wa-color-text-quiet);
  color: var(--wa-color-text-normal);
}

#connection-actions {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
  flex-wrap: wrap;
}

.portal-field-block {
  margin: var(--sp-1) 0 var(--sp-7) var(--sp-9);
}
.portal-field-block-nested { margin-left: var(--sp-9); }
.gmail-helper-page .mono { color: var(--wa-color-text-quiet); font-variant-numeric: tabular-nums; }
.gmail-helper-page wa-switch { display: block; margin: var(--sp-4) 0; }
.gmail-helper-page wa-textarea { margin-top: var(--sp-1); }
pre.small {
  background: var(--wa-color-surface-lowered);
  border: 1px solid var(--wa-color-surface-border);
  border-radius: var(--wa-panel-border-radius);
  padding: var(--sp-3) var(--sp-4);
  font-size: var(--wa-font-size-2xs);
  color: var(--wa-color-text-quiet);
  white-space: pre-wrap;
  word-break: break-word;
  margin-top: var(--sp-2);
}
.test-connections-section {
  margin-top: var(--sp-7);
  padding-top: var(--sp-5);
  border-top: 1px solid var(--wa-color-surface-border);
}
.test-connections-header {
  display: flex;
  gap: var(--sp-4);
  align-items: center;
  margin-bottom: var(--sp-3);
  flex-wrap: wrap;
}
.test-connections-title { font-size: var(--wa-font-size-s); }
.test-connections-results { font-size: var(--wa-portal-font-base); }
.portal-status-chip {
  display: inline-flex;
  align-items: center;
  min-height: 18px;
  padding: 1px 6px;
  border: 1px solid var(--wa-color-surface-border);
  border-radius: 4px;
  background: var(--wa-color-surface-lowered);
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-2xs);
  font-weight: 500;
  line-height: 1.2;
  vertical-align: baseline;
}
.portal-status-chip.is-ok {
  border-color: var(--wa-color-success-on-normal);
  background: color-mix(in srgb, var(--wa-color-success-on-normal) 14%, white);
  color: var(--wa-color-success-on-normal);
  font-weight: 600;
}
.portal-status-chip.is-warn {
  border-color: var(--wa-color-warning-on-normal);
  background: color-mix(in srgb, var(--wa-color-warning-on-normal) 14%, white);
  color: var(--wa-color-warning-on-normal);
  font-weight: 600;
}
html.wa-dark .portal-status-chip.is-ok {
  background: color-mix(in srgb, var(--wa-color-success-on-normal) 18%, var(--wa-color-surface-lowered));
}
html.wa-dark .portal-status-chip.is-warn {
  background: color-mix(in srgb, var(--wa-color-warning-on-normal) 18%, var(--wa-color-surface-lowered));
}
.portal-status-chip + .portal-status-chip {
  margin-left: var(--sp-1);
}

html.wa-dark wa-tab[active]::part(base) {
  color: var(--wa-color-text-normal);
  font-weight: 600;
  background: color-mix(in srgb, var(--wa-color-text-link) 10%, transparent);
  border-radius: 4px 4px 0 0;
}
html.wa-dark wa-tab:not([active])::part(base) {
  color: var(--wa-color-text-quiet);
}
.connections-filter-row {
  display: flex;
  gap: var(--sp-4);
  align-items: center;
  margin-bottom: var(--sp-5);
}
.switch-row { display: flex; align-items: center; gap: var(--sp-7); padding: var(--sp-3) 0; }
.switch-row wa-switch { --width: 48px; --height: 24px; }
.switch-label strong {
  display: block;
  font-size: var(--wa-portal-font-heading-s);
  color: var(--wa-color-text-normal);
  font-weight: 600;
}
.switch-label .desc {
  font-size: var(--wa-font-size-s);
  color: var(--wa-color-text-quiet);
  margin-top: var(--sp-1);
  line-height: 1.5;
}

.grid-2 {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: var(--sp-4) var(--sp-7);
  align-items: center;
  margin: var(--sp-5) 0;
}
.grid-2 label { font-size: var(--wa-font-size-s); color: var(--wa-color-text-quiet); }

/* === Section Label === */
.section-label {
  font-size: var(--wa-font-size-2xs);
  color: var(--wa-color-text-link);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-weight: 600;
  margin-bottom: var(--sp-5);
  padding-bottom: var(--sp-2);
  border-bottom: 2px solid var(--wa-color-text-link);
}

/* === Step Components (connect pages) === */
.step { margin-bottom: var(--sp-8); }
.step:last-child { margin-bottom: 0; }
.step-label {
  font-size: var(--wa-font-size-xs);
  color: var(--wa-color-text-link);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
  margin-bottom: var(--sp-3);
  padding-bottom: var(--sp-2);
  border-bottom: 2px solid var(--wa-color-text-link);
}
.step-desc {
  font-size: var(--wa-font-size-s);
  color: var(--wa-color-text-quiet);
  line-height: 1.5;
  margin-bottom: var(--sp-5);
}

/* === Account List (connect pages) === */
.accounts-list { margin-top: var(--sp-5); }
.account-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--sp-3) 0;
  border-bottom: 1px solid var(--wa-color-surface-border);
  font-size: var(--wa-font-size-s);
}
.account-row:last-child { border-bottom: none; }
.account-email { color: var(--wa-color-text-normal); }
.account-scopes,
.account-label {
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-xs);
  margin-left: var(--sp-3);
}
.account-actions { display: flex; gap: var(--sp-2); align-items: center; }

/* === Info Text === */
.info-text { font-size: var(--wa-portal-font-base); color: var(--wa-color-text-quiet); line-height: 1.5; }
.info-text strong { color: var(--wa-color-text-normal); }
.info-text code { font-family: var(--wa-font-family-code); font-size: var(--wa-font-size-xs); color: var(--wa-color-text-quiet); }

.pill {
  display: inline-block;
  font-size: var(--wa-font-size-2xs);
  padding: 1px var(--sp-2);
  border-radius: 3px;
  background: var(--wa-color-surface-lowered);
  color: var(--wa-color-text-quiet);
  margin-left: var(--sp-1);
}

.portal-badge-quiet,
wa-badge.portal-badge-quiet {
  color: var(--wa-color-text-quiet);
}
wa-badge.portal-badge-quiet::part(base) {
  background: var(--wa-color-surface-lowered);
  border-color: var(--wa-color-surface-border);
  color: var(--wa-color-text-quiet);
}

wa-badge.portal-badge-success::part(base) {
  background: color-mix(in srgb, var(--wa-color-success-on-normal) 10%, transparent);
  border-color: color-mix(in srgb, var(--wa-color-success-on-normal) 30%, transparent);
  color: var(--wa-color-success-on-normal);
}

.account-actions wa-button[variant="neutral"]::part(base),
.account-actions button:not([variant]) {
  background: transparent;
  border-color: transparent;
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-2xs);
}
.account-actions wa-button[variant="neutral"]::part(base):hover,
.account-actions button:not([variant]):hover {
  color: var(--wa-color-danger-on-normal);
  border-color: color-mix(in srgb, var(--wa-color-danger-on-normal) 30%, transparent);
}

wa-button.portal-quiet-action::part(base),
wa-button.portal-ghost-action::part(base) {
  background: transparent;
  border-color: var(--wa-color-surface-border);
  color: var(--wa-color-text-quiet);
}
wa-button.portal-quiet-action::part(base):hover,
wa-button.portal-ghost-action::part(base):hover {
  background: var(--wa-color-surface-lowered);
  border-color: var(--wa-color-text-quiet);
  color: var(--wa-color-text-normal);
}

/* === Save Section (connect pages) === */
.save-section { margin-top: var(--sp-7); padding-top: var(--sp-7); border-top: 1px solid var(--wa-color-surface-border); }
.save-row { display: flex; align-items: center; gap: var(--sp-4); }
.save-status { font-size: var(--wa-portal-font-base); margin-left: var(--sp-3); }
.save-status.ok { color: var(--wa-color-success-on-normal); }
.save-status.err { color: var(--wa-color-danger-on-normal); }

/* === Card Header (wa-card in connect pages) === */
.page-centered wa-card h2 { font-size: var(--wa-portal-font-heading-s); font-weight: 600; margin-bottom: var(--sp-2); }
.header-desc { font-size: var(--wa-font-size-s); color: var(--wa-color-text-quiet); line-height: 1.6; }

/* === Plain Card (non-WA) === */
.card {
  background: var(--wa-color-surface-default);
  border: 1px solid var(--wa-color-surface-border);
  border-radius: var(--wa-panel-border-radius, 6px);
  overflow: hidden;
  min-width: 0;
  border-left: 3px solid color-mix(in srgb, var(--wa-color-text-link) 50%, var(--wa-color-surface-border));
}
.card-header { padding: var(--sp-6) var(--sp-8); border-bottom: 1px solid var(--wa-color-surface-border); background: color-mix(in srgb, var(--wa-color-text-link) 4%, transparent); }
.card-body { padding: var(--sp-6) var(--sp-8); font-size: var(--wa-portal-font-base); line-height: 1.6; color: var(--wa-color-text-quiet); }
.card h2, wa-card h2 { font-size: var(--wa-font-size-s); font-weight: 600; margin: 0; }
.card .sub, wa-card .sub { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); margin-top: 2px; }

/* === Navigation/Home Pages === */
.portal-heading {
  font-size: var(--wa-font-size-l);
  color: var(--wa-color-text-normal);
  margin-bottom: var(--sp-3);
}
.portal-subtitle {
  font-size: var(--wa-font-size-s);
  color: var(--wa-color-text-quiet);
  margin-bottom: var(--sp-10);
}
.nav-cards {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  margin-bottom: var(--sp-10);
}
.nav-link { text-decoration: none; color: inherit; }
.nav-card { transition: border-color 0.15s; cursor: pointer; border-left: 3px solid var(--wa-color-text-link); }
.nav-card:hover { border-color: var(--wa-color-text-link); }
.nav-card-row { display: flex; align-items: center; gap: var(--sp-7); }
.nav-card-main { flex: 1; min-width: 0; }
.nav-card-icon {
  font-size: var(--wa-portal-font-heading-l);
  width: 36px;
  text-align: center;
  flex-shrink: 0;
}
.nav-card-title {
  font-size: var(--wa-font-size-s);
  font-weight: 600;
  color: var(--wa-color-text-link);
  margin-bottom: var(--sp-1);
}
.nav-card-desc {
  font-size: var(--wa-font-size-xs);
  color: var(--wa-color-text-quiet);
  line-height: 1.5;
}
.nav-card-path {
  font-size: var(--wa-font-size-2xs);
  color: var(--wa-color-text-quiet);
  font-family: var(--wa-font-family-code);
  flex-shrink: 0;
}
.connect-section { margin-bottom: var(--sp-10); }
.connect-section h2 {
  font-size: var(--wa-font-size-s);
  font-weight: 600;
  color: var(--wa-color-text-link);
  margin-bottom: var(--sp-7);
}
.connect-item { margin-bottom: var(--sp-7); }
.connect-item:last-child { margin-bottom: 0; }
.connect-item h3 {
  font-size: var(--wa-portal-font-base);
  font-weight: 600;
  color: var(--wa-color-text-normal);
  margin-bottom: var(--sp-1);
}
.connect-item p {
  font-size: var(--wa-font-size-xs);
  color: var(--wa-color-text-quiet);
  line-height: 1.6;
}
.connect-item code {
  font-size: var(--wa-font-size-xs);
  background: var(--wa-color-surface-lowered);
  border: 1px solid var(--wa-color-surface-border);
  border-radius: 4px;
  padding: 2px 6px;
  color: var(--wa-color-text-normal);
  font-family: var(--wa-font-family-code);
  user-select: all;
}

/* === Downloads === */
.crumbs {
  font-size: var(--wa-font-size-xs);
  color: var(--wa-color-text-quiet);
  margin-bottom: var(--sp-7);
}
.crumbs a { color: var(--wa-color-text-link); text-decoration: none; }
.crumbs a:hover { text-decoration: underline; }
.crumbs .sep { color: var(--wa-color-surface-border); margin: 0 var(--sp-3); }
.admin-banner {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
  padding: var(--sp-4) var(--sp-6);
  margin-bottom: var(--sp-8);
  border: 1px solid var(--wa-color-text-link);
  background: color-mix(in srgb, var(--wa-color-text-link) 8%, transparent);
  border-radius: 6px;
  font-size: var(--wa-portal-font-base);
  color: var(--wa-color-text-normal);
}
.file-list {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--wa-color-surface-border);
  border-left: 3px solid color-mix(in srgb, var(--wa-color-text-link) 50%, var(--wa-color-surface-border));
  border-radius: 8px;
  background: var(--wa-color-surface-lowered);
  overflow: hidden;
  margin-bottom: var(--sp-10);
}
.file-row {
  display: flex;
  align-items: center;
  gap: var(--sp-7);
  padding: var(--sp-6) var(--sp-8);
  border-bottom: 1px solid var(--wa-color-surface-border);
  text-decoration: none;
  color: inherit;
  transition: background 0.12s;
}
.file-row:last-child { border-bottom: none; }
.file-row:hover { background: var(--wa-color-surface-lowered); }
.file-row-icon {
  font-size: var(--wa-portal-font-heading-m);
  width: 28px;
  text-align: center;
  color: var(--wa-color-text-link);
  flex-shrink: 0;
}
.file-row-body { flex: 1; min-width: 0; }
.file-row-title {
  font-size: var(--wa-font-size-s);
  color: var(--wa-color-text-normal);
  margin-bottom: var(--sp-1);
  word-break: break-all;
}
.file-row-meta {
  font-size: var(--wa-font-size-xs);
  color: var(--wa-color-text-quiet);
  display: flex;
  gap: var(--sp-5);
  flex-wrap: wrap;
}
.file-row-meta .dot { color: var(--wa-color-surface-border); }
.file-row-date {
  font-size: var(--wa-font-size-xs);
  color: var(--wa-color-text-quiet);
  flex-shrink: 0;
  text-align: right;
}
.empty .title {
  font-size: var(--wa-font-size-s);
  color: var(--wa-color-text-normal);
  margin-bottom: var(--sp-2);
}

.portal-footer {
  padding: var(--sp-7) var(--sp-9);
  text-align: center;
  font-size: var(--wa-font-size-2xs);
  color: var(--wa-color-text-quiet);
  border-top: 1px solid var(--wa-color-surface-border);
}

/* === Auth Pages === */
.auth-page wa-card { max-width: 420px; }
.auth-page wa-card h2 { margin-top: var(--sp-4); }
.auth-form {
  display: flex;
  flex-direction: column;
  gap: var(--sp-5);
  margin-top: var(--sp-7);
}
.auth-provider-button {
  display: block;
  width: 100%;
  margin-top: var(--sp-4);
}
.auth-message { font-size: var(--wa-font-size-xs); }
.auth-message-error { color: var(--wa-color-danger-on-normal); }
.auth-error-details {
  margin-top: var(--sp-7);
  background: var(--wa-color-surface-lowered);
  border: 1px solid var(--wa-color-surface-border);
  border-radius: var(--wa-panel-border-radius);
  color: var(--wa-color-danger-on-normal);
  font-family: var(--wa-font-family-code);
  font-size: var(--wa-font-size-xs);
  padding: var(--sp-5);
  white-space: pre-wrap;
  word-break: break-word;
}
.auth-info-grid {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: var(--sp-3) var(--sp-6);
  margin: var(--sp-7) 0;
  padding: var(--sp-5);
  background: var(--wa-color-surface-lowered);
  border: 1px solid var(--wa-color-surface-border);
  border-radius: var(--wa-panel-border-radius);
  font-size: var(--wa-font-size-xs);
}
.auth-info-grid span { color: var(--wa-color-text-quiet); }
.auth-info-grid strong { color: var(--wa-color-text-normal); font-weight: 600; overflow-wrap: anywhere; }

/* === Markdown Documents === */
.markdown-page .portal-main { max-width: 960px; }
.markdown-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--sp-4);
  margin-bottom: var(--sp-5);
}
.markdown-page .markdown-body {
  background: var(--wa-color-surface-default);
  border: 1px solid var(--wa-color-surface-border);
  border-radius: var(--wa-panel-border-radius);
  padding: var(--sp-10);
}
.markdown-page .markdown-body pre,
.markdown-page .markdown-body code {
  font-family: var(--wa-font-family-code);
}
.markdown-page .markdown-body .markdown-inline-image {
  display: block;
  max-width: 100%;
  height: auto;
  margin: var(--sp-5) auto;
  border: 1px solid color-mix(in srgb, var(--wa-color-surface-border) 70%, transparent);
  border-radius: var(--wa-panel-border-radius);
  background: var(--wa-color-surface-default);
}
.markdown-page .markdown-body .markdown-mermaid-diagram {
  display: flex;
  justify-content: center;
  max-width: 100%;
  overflow-x: auto;
  margin: var(--sp-5) 0;
  padding: var(--sp-5);
  border: 1px solid color-mix(in srgb, var(--wa-color-surface-border) 70%, transparent);
  border-radius: var(--wa-panel-border-radius);
  background: var(--wa-color-surface-default);
}
.markdown-page .markdown-body .markdown-mermaid-diagram svg {
  max-width: 100%;
  height: auto;
}
.markdown-page .markdown-body .markdown-mermaid-source.is-mermaid-error {
  border-color: color-mix(in srgb, var(--wa-color-danger-on-normal) 45%, var(--wa-color-surface-border));
}

/* === Status Dashboard === */
.toolbar {
  background: var(--wa-color-surface-lowered);
  border-bottom: 1px solid var(--wa-color-surface-border);
  padding: 8px 16px;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  flex-shrink: 0;
}
.toolbar-label { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); text-transform: uppercase; letter-spacing: 0.12em; }
.btn {
  padding: 4px 12px;
  border-radius: 4px;
  font-family: inherit;
  font-size: var(--wa-font-size-xs);
  cursor: pointer;
  border: 1px solid var(--wa-color-surface-border);
  background: transparent;
  color: var(--wa-color-text-quiet);
  transition: color 0.1s, border-color 0.1s, background 0.1s;
}
.btn:hover { color: var(--wa-color-text-normal); border-color: var(--wa-color-text-link); background: var(--wa-color-surface-lowered); }
.btn.active { color: var(--wa-color-warning-on-normal); border-color: var(--wa-color-warning-on-normal); }
#live-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--wa-color-text-quiet);
  flex-shrink: 0;
  transition: background 0.3s;
}
#live-dot.connected { background: var(--wa-color-success-on-normal); }
#live-dot.error { background: var(--wa-color-danger-on-normal); }
wa-button.active { --wa-color-text-quiet: var(--wa-color-warning-on-normal); --wa-color-neutral-border: var(--wa-color-warning-on-normal); }
#uptime { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); margin-left: auto; }
.main { flex: 1; padding: 16px; max-width: 1400px; width: 100%; margin: 0 auto; }
.cards-panel, .warming-section { margin-bottom: 20px; }
.status-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 16px;
}
.status-summary-item {
  background: var(--wa-color-surface-lowered);
  border: 1px solid var(--wa-color-surface-border);
  border-radius: 6px;
  padding: 10px 12px;
  min-width: 0;
  border-left: 3px solid var(--wa-color-text-link);
}
.status-summary-label {
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-2xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 4px;
}
.status-summary-value {
  color: var(--wa-color-text-normal);
  font-size: var(--wa-portal-font-heading-s);
  font-weight: 600;
}
.status-summary-note {
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-2xs);
  margin-top: 2px;
}
.cards-section { margin-bottom: 10px; }
.cards-group-label {
  font-size: var(--wa-font-size-2xs);
  color: var(--wa-color-text-quiet);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-weight: 600;
  margin-bottom: 5px;
}
.cards-row, .warming-grid { display: flex; gap: 8px; flex-wrap: wrap; }
.backend-card, .warming-card {
  background: var(--wa-color-surface-lowered);
  border: 1px solid var(--wa-color-surface-border);
  border-radius: 6px;
  padding: 10px 14px;
}
.backend-card { min-width: 130px; display: flex; flex-direction: column; gap: 4px; border-left: 3px solid var(--wa-color-success-on-normal); }
.warming-card { min-width: 160px; flex: 1; }
.backend-card-header { display: flex; align-items: center; gap: 6px; }
.status-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.status-dot.ok { background: var(--wa-color-success-on-normal); }
.status-dot.failed { background: var(--wa-color-danger-on-normal); }
.backend-name { font-size: var(--wa-portal-font-base); color: var(--wa-color-text-normal); font-weight: 500; }
.backend-meta { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); padding-left: 13px; }
.section {
  margin-bottom: 24px;
  max-width: 100%;
  overflow-x: auto;
}
.section-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 2px solid var(--wa-color-text-link);
}
.section-title { font-size: var(--wa-font-size-xs); color: var(--wa-color-text-link); font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; }
.section-count { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); }
.tool-table, .sched-table { width: 100%; border-collapse: collapse; font-size: var(--wa-portal-font-base); }
.tool-table th, .sched-table th {
  text-align: left;
  padding: 5px 8px;
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-2xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  border-bottom: 2px solid var(--wa-color-surface-border);
  background: color-mix(in srgb, var(--wa-color-text-link) 4%, var(--wa-color-surface-lowered));
  white-space: nowrap;
}
.tool-table td, .sched-table td {
  padding: 5px 8px;
  border-bottom: 1px solid var(--wa-color-surface-lowered);
  vertical-align: top;
  line-height: 1.4;
}
.tool-table tr:last-child td, .sched-table tr:last-child td { border-bottom: none; }
.tool-table tr:hover td { background: var(--wa-color-surface-lowered); }
.tool-id, .last-col, .avg-col, .users-col { color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-2xs); white-space: nowrap; }
.tool-name, .sched-job { color: var(--wa-color-text-link); white-space: nowrap; font-family: var(--wa-font-family-code); }
.tool-name.unmapped { color: var(--wa-color-text-quiet); }
.tool-desc { color: var(--wa-color-text-normal); max-width: 320px; position: relative; }
.desc-short { color: var(--wa-color-text-normal); }
.info-icon {
  display: inline-block;
  font-size: var(--wa-portal-font-4xs);
  color: var(--wa-color-text-quiet);
  cursor: default;
  margin-left: 3px;
  position: relative;
  vertical-align: middle;
  user-select: none;
  font-style: normal;
}
.info-icon:hover { color: var(--wa-color-text-link); }
.info-icon::after {
  content: attr(data-tooltip);
  position: absolute;
  top: calc(100% + 5px);
  left: 0;
  min-width: 160px;
  max-width: 360px;
  background: var(--wa-color-surface-lowered);
  border: 1px solid var(--wa-color-text-link);
  border-radius: 4px;
  padding: 6px 9px;
  font-size: var(--wa-font-size-xs);
  color: var(--wa-color-text-normal);
  white-space: pre-wrap;
  word-break: break-word;
  line-height: 1.55;
  z-index: 200;
  pointer-events: none;
  box-shadow: 0 4px 14px rgba(0,0,0,0.55);
  display: none;
}
.info-icon:hover::after { display: block; }
.info-icon.right-align::after { left: auto; right: 0; }
.users-col { min-width: 80px; max-width: 200px; position: relative; }
.users-list { color: var(--wa-color-text-quiet); }
.badge {
  display: inline-block;
  font-size: var(--wa-portal-font-4xs);
  padding: 1px 5px;
  border-radius: 3px;
  margin-left: 4px;
  vertical-align: middle;
}
.badge-public { background: color-mix(in srgb, var(--wa-color-success-on-normal) 10%, transparent); border: 1px solid color-mix(in srgb, var(--wa-color-success-on-normal) 40%, transparent); color: var(--wa-color-success-on-normal); }
.badge-private { background: color-mix(in srgb, var(--wa-color-warning-on-normal) 15%, transparent); border: 1px solid color-mix(in srgb, var(--wa-color-warning-on-normal) 40%, transparent); color: var(--wa-color-warning-on-normal); }
.badge-facade { background: color-mix(in srgb, var(--wa-color-text-link) 10%, transparent); border: 1px solid var(--wa-color-text-link); color: var(--wa-color-text-link); }
.badge-meta { background: var(--wa-color-surface-lowered); border: 1px solid var(--wa-color-text-quiet); color: var(--wa-color-text-quiet); }
.badge-quiet {
  background: var(--wa-color-surface-lowered);
  border-color: var(--wa-color-surface-border);
  color: var(--wa-color-text-quiet);
}
.calls-col { text-align: right; white-space: nowrap; color: var(--wa-color-text-normal); min-width: 60px; }
.calls-col.zero { color: var(--wa-color-text-quiet); }
.calls-col.active { color: var(--wa-color-warning-on-normal); font-weight: 600; }
.last-col { min-width: 120px; }
.avg-col { text-align: right; min-width: 60px; }
.tool-table tr.tool-active td { background: color-mix(in srgb, var(--wa-color-warning-on-normal) 4%, transparent); }
.tool-table tr.tool-active:hover td { background: color-mix(in srgb, var(--wa-color-warning-on-normal) 9%, transparent); }
@keyframes flash { 0%,100% { background: transparent; } 50% { background: color-mix(in srgb, var(--wa-color-text-link) 12%, transparent); } }
.flash { animation: flash 0.5s ease; }
@keyframes count-flash {
  0% { color: #ff9e64; text-shadow: 0 0 6px rgba(255,158,100,0.9); }
  60% { color: #ff9e64; text-shadow: 0 0 4px rgba(255,158,100,0.6); }
  100% { color: var(--wa-color-warning-on-normal); text-shadow: none; }
}
.calls-col.count-flash { animation: count-flash 0.7s ease-out forwards; }
.toolbar-sep { color: var(--wa-color-surface-border); margin: 0 2px; user-select: none; }
.section.empty-section { display: none; }
.warming-card-title {
  font-size: var(--wa-font-size-2xs);
  color: var(--wa-color-text-quiet);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 6px;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--wa-color-surface-border);
}
.warming-stat { display: flex; justify-content: space-between; align-items: baseline; padding: 2px 0; }
.warming-stat-label { font-size: var(--wa-font-size-xs); color: var(--wa-color-text-quiet); }
.warming-stat-value { font-size: var(--wa-font-size-xs); color: var(--wa-color-text-normal); font-weight: 500; }
.warming-stat-value.in-progress, .sched-age.overdue, .sched-overdue { color: var(--wa-color-warning-on-normal); }
.warming-stat-value.success, .sched-status-ok, .sched-ok { color: var(--wa-color-success-on-normal); }
.warming-stat-value.quiet-success,
.sched-status-ok.quiet,
.sched-ok.quiet { color: var(--wa-color-text-quiet); }
.warming-stat-value.error, .sched-status-failure { color: var(--wa-color-danger-on-normal); }
.warming-stat-value.on-demand { color: var(--wa-color-text-link); }
.sched-table { margin-top: 4px; }
.sched-job { font-weight: 500; }
.sched-status-unknown { color: var(--wa-color-text-quiet); font-style: italic; }
.sched-desc { color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-2xs); max-width: 320px; }
.sched-summary { color: var(--wa-color-text-quiet); }
.sched-age { white-space: nowrap; color: var(--wa-color-text-normal); }
#error-msg { color: var(--wa-color-danger-on-normal); padding: 32px; text-align: center; font-size: var(--wa-portal-font-base); display: none; }

/* === Tracker Status === */
.tracker-meta {
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-s);
  margin-bottom: var(--sp-8);
}
.tracker-table {
  display: block;
  max-width: 100%;
  width: 100%;
  overflow-x: auto;
  border-collapse: collapse;
  margin-top: var(--sp-4);
  font-size: var(--wa-font-size-xs);
}
.tracker-table thead,
.tracker-table tbody,
.tracker-table tr { width: 100%; }
.tracker-table th,
.tracker-table td {
  text-align: left;
  padding: var(--sp-3) var(--sp-4);
  border-bottom: 1px solid var(--wa-color-surface-border);
  vertical-align: top;
}
.tracker-table th {
  color: var(--wa-color-text-quiet);
  background: color-mix(in srgb, var(--wa-color-text-link) 4%, var(--wa-color-surface-lowered));
  font-weight: 600;
  border-bottom-width: 2px;
}
.tracker-empty { color: var(--wa-color-text-quiet); text-align: center; }
.tracker-table td:last-child {
  max-width: 200px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tracker-table td:last-child:hover {
  white-space: normal;
  word-break: break-word;
}

/* === Row / Col (data lists) === */
.row {
  display: flex;
  align-items: flex-start;
  gap: var(--sp-5);
  padding: var(--sp-3) 0;
  border-bottom: 1px solid var(--wa-color-surface-border);
  font-size: var(--wa-font-size-xs);
}
.row:last-child { border-bottom: none; }
.col { flex: 1; min-width: 0; }

.service-status-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sp-5);
}
.service-status-item {
  min-width: 0;
  background: var(--wa-color-surface-lowered);
  border: 1px solid var(--wa-color-surface-border);
  border-left: 3px solid var(--wa-color-text-link);
  border-radius: 6px;
  padding: var(--sp-4) var(--sp-5);
}
.service-status-label {
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-2xs);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: var(--sp-1);
}
.service-status-value {
  color: var(--wa-color-text-normal);
  font-size: var(--wa-font-size-s);
  font-weight: 600;
  overflow-wrap: anywhere;
}

/* === Empty State === */
.empty { padding: var(--sp-9); text-align: center; color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-xs); }
.empty-bordered {
  padding: var(--sp-11) var(--sp-9);
  border: 1px dashed var(--wa-color-surface-border);
  border-radius: 8px;
  font-size: var(--wa-portal-font-base);
}

/* === Table (no WA equivalent) === */
.portal-table { width: 100%; border-collapse: collapse; font-size: var(--wa-portal-font-base); }
.portal-table th {
  text-align: left;
  font-size: var(--wa-font-size-2xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--wa-color-text-quiet);
  padding: var(--sp-3) var(--sp-5);
  border-bottom: 2px solid var(--wa-color-surface-border);
  background: color-mix(in srgb, var(--wa-color-text-link) 4%, transparent);
}
.portal-table td {
  padding: var(--sp-3) var(--sp-5);
  border-bottom: 1px solid var(--wa-color-border-muted, var(--wa-color-surface-border));
  color: var(--wa-color-text-normal);
}
.portal-table tr:nth-child(even) td { background: color-mix(in srgb, var(--wa-color-surface-lowered) 50%, transparent); }
.portal-table tr:hover td { background: var(--wa-color-surface-lowered); }

/* === Spinner === */
.spinner {
  display: inline-block;
  width: 14px; height: 14px;
  border: 2px solid var(--wa-color-surface-border);
  border-top-color: var(--wa-color-text-link);
  border-radius: 50%;
  animation: wa-spin 0.6s linear infinite;
  vertical-align: middle;
}
.spinner-sm { width: 12px; height: 12px; }
@keyframes wa-spin { to { transform: rotate(360deg); } }

/* === WA Component Overrides === */
wa-button { font-size: var(--wa-portal-font-base); }
wa-button::part(base) { height: 28px; min-height: 28px; padding-inline: var(--sp-4); line-height: 26px; }
wa-button[size="s"]::part(base) { height: 24px; min-height: 24px; padding-inline: var(--sp-3); line-height: 22px; font-size: var(--wa-font-size-xs); }

wa-badge { padding: 2px 7px; font-size: var(--wa-font-size-xs); line-height: 1.2; border-radius: var(--sp-1); }

wa-card {
  --spacing: var(--sp-5) var(--sp-7);
  box-shadow: none;
  max-width: 100%;
  min-width: 0;
}

wa-divider { --width: 1px; --spacing: var(--sp-3); --color: var(--wa-color-surface-border); }

wa-switch { font-size: var(--wa-portal-font-base); }
wa-switch.switch-large { --width: 48px; --height: 24px; }
wa-switch.block-switch { display: block; margin: var(--sp-4) 0; }

wa-tab { font-size: var(--wa-portal-font-base); }
wa-tab-group {
  --track-color: var(--wa-color-surface-border);
  max-width: 100%;
  min-width: 0;
}
wa-tab::part(base) { padding: var(--sp-2) var(--sp-4); }
wa-tab-panel { --padding: var(--sp-5) 0; }

wa-input, wa-select, wa-textarea { font-size: var(--wa-portal-font-base); }
wa-select::part(listbox) { padding-block: var(--sp-1); font-size: var(--wa-portal-font-base); }
wa-textarea.portal-textarea { margin-top: var(--sp-1); }

/* === Utility === */
.hidden { display: none !important; }
.muted { color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-xs); }
.mono { font-family: var(--wa-font-family-code); }

/* === Operational Console Primitives === */
.portal-ops-page,
.portal-ops-shell {
  background: var(--wa-color-surface-default);
  color: var(--wa-color-text-normal);
}

.portal-ops-sidebar {
  background: var(--wa-color-surface-lowered);
  border-color: var(--wa-color-surface-border);
}

.portal-ops-panel {
  border: 1px solid var(--wa-color-surface-border);
  border-radius: var(--wa-panel-border-radius);
  background: var(--wa-color-surface-default);
  color: var(--wa-color-text-normal);
}

.portal-ops-surface-muted {
  border: 1px solid color-mix(in srgb, var(--wa-color-surface-border) 72%, transparent);
  border-radius: var(--wa-panel-border-radius);
  background: color-mix(in srgb, var(--wa-color-surface-lowered) 82%, transparent);
  color: var(--wa-color-text-normal);
}

.portal-ops-control {
  min-height: 30px;
  border: 1px solid var(--wa-color-surface-border);
  border-radius: var(--wa-panel-border-radius);
  background: transparent;
  color: var(--wa-color-text-normal);
  font: inherit;
  font-size: var(--wa-font-size-xs);
  transition: background 0.1s, border-color 0.1s, color 0.1s, box-shadow 0.1s;
}

.portal-ops-control:hover {
  border-color: color-mix(in srgb, var(--wa-color-text-link) 55%, var(--wa-color-surface-border));
  background: var(--wa-color-surface-lowered);
  color: var(--wa-color-text-normal);
}

.portal-ops-control:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--wa-color-text-link) 70%, transparent);
  outline-offset: 2px;
}

.portal-ops-control.is-primary {
  border-color: var(--wa-color-text-link);
  background: var(--wa-color-text-link);
  color: #fff;
  font-weight: 700;
}

.portal-ops-control.is-primary:hover {
  background: color-mix(in srgb, var(--wa-color-text-link) 86%, var(--wa-color-text-normal));
}

.portal-ops-list-item {
  position: relative;
  border: 1px solid transparent;
  border-radius: var(--wa-panel-border-radius);
  background: transparent;
  color: var(--wa-color-text-normal);
  transition: background 0.1s, border-color 0.1s, box-shadow 0.1s;
}

.portal-ops-list-item:hover,
.portal-ops-list-item:focus-visible {
  background: color-mix(in srgb, var(--wa-color-text-link) 10%, transparent);
  outline: none;
}

.portal-ops-list-item.is-selected {
  background: color-mix(in srgb, var(--wa-color-text-link) 30%, var(--wa-color-surface-default));
  border-color: color-mix(in srgb, var(--wa-color-text-link) 78%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--wa-color-text-link) 30%, transparent);
}

.portal-ops-summary-card {
  min-width: 0;
  border: 1px solid var(--wa-color-surface-border);
  border-left: 3px solid var(--wa-color-text-link);
  border-radius: var(--wa-panel-border-radius);
  background: var(--wa-color-surface-lowered);
  color: var(--wa-color-text-normal);
}

.portal-ops-summary-card.is-ok { border-left-color: var(--wa-color-success-on-normal); }
.portal-ops-summary-card.is-warn { border-left-color: var(--wa-color-warning-on-normal); }
.portal-ops-summary-card.is-error { border-left-color: var(--wa-color-danger-on-normal); }

.portal-ops-heading-label {
  color: var(--wa-color-text-quiet);
  font-size: var(--wa-font-size-2xs);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 700;
}

@media (max-width: 520px) {
  .portal-header { padding: 0 var(--sp-5); }
  .portal-header-actions { min-width: 0; }
  .portal-header-user {
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .wrap {
    margin: var(--sp-7) auto;
    padding: 0 var(--sp-5);
  }
  .portal-main { padding: var(--sp-8) var(--sp-5); }
  .portal-split-header,
  .portal-card-header-split {
    align-items: flex-start;
    flex-direction: column;
  }
  .gmail-helper-page #connection-badge {
    justify-content: flex-start;
    padding-top: 0;
  }
  .portal-verified-line {
    justify-content: flex-start;
    max-width: none;
    text-align: left;
  }
  .portal-split-header > *,
  .portal-card-header-split > * {
    max-width: 100%;
  }
  .portal-select-md,
  .portal-select-lg {
    min-width: 0;
    width: 100%;
  }
  .portal-inline-note {
    display: block;
    margin: var(--sp-2) 0 0;
  }
  .portal-field-block,
  .portal-field-block-nested {
    margin-left: 0;
  }
  .grid-2 {
    grid-template-columns: 1fr;
    gap: var(--sp-3);
  }
  .toolbar { padding: 8px 12px; gap: 8px; }
  #uptime { margin-left: 0; width: 100%; }
  .status-summary,
  .service-status-grid {
    grid-template-columns: 1fr;
  }
}

/* === Terminal Page === */
.workspace { display: flex; flex: 1; overflow: hidden; min-height: 0; }

.sessions-panel {
  width: 210px;
  background: var(--wa-color-surface-lowered);
  border-right: 1px solid var(--wa-color-surface-border);
  display: flex; flex-direction: column; flex-shrink: 0;
}
.sessions-label {
  padding: 10px 12px 6px;
  font-size: var(--wa-font-size-xs); font-weight: 700;
  color: var(--wa-color-text-quiet);
  text-transform: uppercase; letter-spacing: 0.06em;
  border-bottom: 1px solid var(--wa-color-surface-border);
}
.sessions-list { flex: 1; overflow-y: auto; padding: 4px 0; }

.session-item {
  position: relative; padding: 7px 10px; cursor: pointer;
  border-radius: 5px; margin: 1px 5px;
  transition: background 0.1s, border-color 0.1s, box-shadow 0.1s; border: 1px solid transparent;
}
.session-item:hover { background: var(--wa-color-surface-border); }
.session-item.active {
  background: color-mix(in srgb, var(--wa-color-text-link) 16%, var(--wa-color-surface-border));
  border-color: color-mix(in srgb, var(--wa-color-text-link) 62%, transparent);
  padding-left: 14px;
}
.session-item.active::before {
  content: '';
  position: absolute;
  left: 5px;
  top: 7px;
  bottom: 7px;
  width: 3px;
  border-radius: 3px;
  background: var(--wa-color-text-link);
}
.session-item.active .session-name { color: var(--wa-color-text-normal); font-weight: 600; }

.session-name {
  font-size: var(--wa-portal-font-base); color: var(--wa-color-text-normal);
  display: flex; align-items: center; gap: 6px; overflow: hidden;
}
.session-name.has-badge { padding-right: 24px; }
.session-name-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }

.session-dot {
  width: 7px;
  height: 7px;
  padding: 0;
  border-radius: 50%;
  background: var(--wa-color-success-on-normal);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--wa-color-success-on-normal) 16%, transparent);
  flex-shrink: 0;
}
.session-dot.is-idle,
.session-dot.empty {
  width: 5px;
  height: 5px;
  background: color-mix(in srgb, var(--wa-color-text-quiet) 42%, transparent);
  box-shadow: none;
}
.session-item.active .session-dot {
  width: 8px;
  height: 8px;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--wa-color-success-on-normal) 20%, transparent);
}
.session-item.active .session-dot.is-idle {
  background: var(--wa-color-text-link);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--wa-color-text-link) 18%, transparent);
}

.waiting-badge {
  position: absolute; top: 7px; right: 8px;
  font-size: var(--wa-font-size-2xs); font-weight: 700;
  color: #ff9e64; background: rgba(255, 158, 100, 0.15);
  border: 1px solid rgba(255, 158, 100, 0.45);
  border-radius: 9px; padding: 1px 5px; line-height: 14px;
  animation: waiting-pulse 1.4s ease-in-out infinite; pointer-events: none;
}
@keyframes waiting-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }

.activity-badge {
  position: absolute; top: 9px; right: 8px;
  display: flex; align-items: center; gap: 2px; padding: 3px 5px;
  background: color-mix(in srgb, var(--wa-color-text-link) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--wa-color-text-link) 30%, transparent);
  border-radius: 9px; pointer-events: none;
}
.activity-badge span {
  width: 3px; height: 3px; border-radius: 50%;
  background: var(--wa-color-text-link);
  animation: activity-dot 1.1s ease-in-out infinite; flex-shrink: 0;
}
.activity-badge span:nth-child(2) { animation-delay: 0.18s; }
.activity-badge span:nth-child(3) { animation-delay: 0.36s; }
@keyframes activity-dot { 0%, 60%, 100% { opacity: 0.2; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-2px); } }

.session-meta { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); margin-top: 2px; padding-left: 12px; }
.runtime-badge { display: inline-block; color: var(--wa-color-warning-on-normal); margin-right: 5px; }

.new-session-btn {
  margin: 6px 8px 8px; padding: 7px 10px;
  background: transparent; color: var(--wa-color-text-link);
  border: 1px solid var(--wa-color-surface-border); border-radius: 5px;
  cursor: pointer; font-size: var(--wa-portal-font-base);
  font-family: var(--wa-font-family-body); text-align: center;
  transition: background 0.1s, border-color 0.1s;
}
.new-session-btn:hover { background: var(--wa-color-surface-lowered); border-color: var(--wa-color-text-link); }

.resize-handle { width: 5px; cursor: col-resize; background: transparent; flex-shrink: 0; transition: background 0.15s; position: relative; z-index: 2; margin-left: -1px; }
.resize-handle:hover, .resize-handle.active { background: var(--wa-color-text-link); }

.terminal-area { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-width: 0; min-height: 0; }
#terminal-container.theme-light, .terminal-header.theme-light {
  --wa-color-text-normal: #1E293B; --wa-color-text-quiet: #64748B; --wa-color-text-link: #065186;
  --wa-color-surface-border: #E2E8F0; --wa-color-surface-lowered: #F1F5F9; --wa-color-surface-default: #F8FAFC;
}
#terminal-container.theme-dark, .terminal-header.theme-dark {
  --wa-color-text-normal: #c0caf5; --wa-color-text-quiet: #787c99; --wa-color-text-link: #7aa2f7;
  --wa-color-surface-border: #292e42; --wa-color-surface-lowered: #16161e; --wa-color-surface-default: #1a1b26;
}

.terminal-header {
  background: var(--wa-color-surface-default); border-bottom: none;
  padding: 0 14px; height: 30px;
  display: flex; align-items: center; gap: 6px; flex-shrink: 0;
  font-size: var(--wa-font-size-xs); color: var(--wa-color-text-quiet);
}
.terminal-session-name { color: var(--wa-color-text-link); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }

#terminal-container { flex: 1; min-height: 0; padding: 4px 8px; overflow: hidden; position: relative; background: var(--wa-color-surface-default); }
#terminal-container.drag-over { outline: 2px dashed var(--wa-color-text-link); outline-offset: -3px; }
#terminal-container.drag-over::after {
  content: 'Drop file to upload'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  background: color-mix(in srgb, var(--wa-color-surface-default) 82%, transparent);
  color: var(--wa-color-text-link); font-size: var(--wa-font-size-s);
  padding: 12px 28px; border-radius: 6px; pointer-events: none; white-space: nowrap;
}

#no-session-msg { flex: 1; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 10px; color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-s); }
#no-session-msg kbd { background: var(--wa-color-surface-border); border: 1px solid var(--wa-color-surface-border); border-radius: 3px; padding: 2px 6px; font-family: var(--wa-font-family-body); font-size: var(--wa-portal-font-base); color: var(--wa-color-text-quiet); }

.modal-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.65); z-index: 100; align-items: center; justify-content: center; }
.modal-overlay.visible { display: flex; }
.modal { background: var(--wa-color-surface-lowered); border: 1px solid var(--wa-color-surface-border); border-radius: 8px; padding: 20px; width: 320px; box-shadow: 0 8px 32px rgba(0,0,0,0.5); }
.modal-wide { width: 440px; }
.modal-kicker { font-size: var(--wa-portal-font-base); color: var(--wa-color-text-quiet); margin: -4px 0 10px; }
.modal h2 { font-size: var(--wa-font-size-s); margin-bottom: 14px; color: var(--wa-color-text-normal); font-weight: 600; }
.modal input { width: 100%; background: var(--wa-color-surface-lowered); border: 1px solid var(--wa-color-surface-border); border-radius: 4px; color: var(--wa-color-text-normal); font-family: var(--wa-font-family-body); font-size: var(--wa-font-size-s); padding: 8px 10px; outline: none; }
.modal input:focus { border-color: var(--wa-color-text-link); }
.modal-buttons { display: flex; justify-content: flex-end; gap: 8px; margin-top: 14px; }

.btn-cancel { padding: 6px 14px; background: transparent; color: var(--wa-color-text-quiet); border: 1px solid var(--wa-color-surface-border); border-radius: 4px; cursor: pointer; font-family: var(--wa-font-family-body); font-size: var(--wa-portal-font-base); transition: color 0.1s; }
.btn-cancel:hover { color: var(--wa-color-text-normal); }
/* Primary action button — solid brand blue with white text, matching the
   idle/count badges (#2563eb), instead of the washed-out link-color fill. */
.btn-create { padding: 6px 14px; background: #2563eb; color: #fff; border: none; border-radius: 4px; cursor: pointer; font-family: var(--wa-font-family-body); font-size: var(--wa-portal-font-base); transition: background 0.1s; }
.btn-create:hover { background: #1d4ed8; }

.resume-session-btn {
  color: var(--wa-color-text-quiet);
  margin-top: 0;
  border-color: transparent;
  font-size: var(--wa-font-size-xs);
}
.resume-session-btn:hover { color: var(--wa-color-text-link); border-color: var(--wa-color-surface-border); }
.resume-session-btn.has-sessions { color: var(--wa-color-text-quiet); }
.resume-search { display: flex; gap: 6px; margin-bottom: 8px; align-items: center; }
.resume-search input { flex: 1; background: var(--wa-color-surface-default); border: 1px solid var(--wa-color-text-link); border-radius: 5px; padding: 6px 8px; color: var(--wa-color-text-normal); font-size: var(--wa-portal-font-base); font-family: var(--wa-font-family-body); outline: none; }
.resume-search input:focus { border-color: var(--wa-color-text-link); }
.resume-search input::placeholder { color: var(--wa-color-text-quiet); }
.resume-toggle { background: transparent; border: 1px solid var(--wa-color-surface-border); border-radius: 5px; color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-2xs); padding: 5px 8px; cursor: pointer; white-space: nowrap; font-family: var(--wa-font-family-body); transition: all 0.1s; }
.resume-toggle.active { color: var(--wa-color-text-normal); background: var(--wa-color-surface-border); border-color: var(--wa-color-surface-border); }
.resume-count { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); margin-bottom: 4px; }
.resume-list { max-height: 400px; overflow-y: auto; }
.resume-item { padding: 8px 10px; cursor: pointer; border-radius: 5px; margin: 2px 0; transition: background 0.1s; border: 1px solid transparent; }
.resume-item:hover { background: var(--wa-color-surface-border); border-color: var(--wa-color-text-link); }
.resume-item-name { font-size: var(--wa-portal-font-base); color: var(--wa-color-text-normal); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.resume-item-subtitle { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 1px; }
.resume-item-meta { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); margin-top: 2px; }
.resume-empty { padding: 16px 0; text-align: center; font-size: var(--wa-portal-font-base); color: var(--wa-color-text-quiet); }

.project-list { max-height: 300px; overflow-y: auto; }
.project-item { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; cursor: default; border-radius: 5px; margin: 2px 0; transition: box-shadow 0.12s; border: 1px solid transparent; }
.project-item:hover, .project-item:focus-within { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--wa-color-text-link) 28%, transparent), 0 0 12px color-mix(in srgb, var(--wa-color-text-link) 12%, transparent); }
.project-item-info { flex: 1; min-width: 0; }
.project-item-name { font-size: var(--wa-font-size-s); color: var(--wa-color-text-normal); font-weight: 600; }
.project-item-desc { font-size: var(--wa-font-size-xs); color: var(--wa-color-text-quiet); margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.runtime-choices { display: flex; gap: 6px; margin-left: 12px; flex-shrink: 0; }
.runtime-choice { background: transparent; color: var(--wa-color-text-link); border: 1px solid var(--wa-color-surface-border); border-radius: 4px; padding: 4px 9px; cursor: pointer; font-family: var(--wa-font-family-body); font-size: var(--wa-font-size-xs); transition: background 0.1s, border-color 0.1s, color 0.1s; }
.runtime-choice:hover,
.runtime-choice:focus-visible { background: var(--wa-color-text-link); border-color: var(--wa-color-text-link); color: #fff; }

.project-group-header { display: flex; align-items: center; gap: 5px; padding: 6px 8px 4px; cursor: pointer; user-select: none; font-size: var(--wa-font-size-2xs); font-weight: 700; color: var(--wa-color-text-quiet); text-transform: uppercase; letter-spacing: 0.5px; border-radius: 4px; margin-top: 4px; }
.project-group-header:first-child { margin-top: 0; }
.project-group-header:hover { color: var(--wa-color-text-link); }
.project-group-chevron { font-size: var(--wa-font-size-2xs); width: 10px; flex-shrink: 0; }
.project-group-icon { font-size: var(--wa-font-size-xs); line-height: 1; }
.project-group-name { flex: 1; }
.project-group-count { background: var(--wa-color-surface-border); color: var(--wa-color-text-link); font-size: var(--wa-font-size-3xs); padding: 1px 6px; border-radius: 8px; font-weight: 700; }

.session-project { display: inline-block; font-size: var(--wa-font-size-3xs); background: var(--wa-color-surface-border); color: var(--wa-color-text-link); padding: 1px 5px; border-radius: 3px; margin-right: 4px; vertical-align: middle; }
.runtime-tag { color: var(--wa-color-warning-on-normal); }

.size-selector { margin-left: auto; margin-right: 8px; display: flex; gap: 2px; background: var(--wa-color-surface-border); border-radius: 5px; padding: 2px; flex-shrink: 0; }
.size-btn { min-width: 26px; padding: 2px 7px; background: transparent; border: none; cursor: pointer; color: var(--wa-color-text-quiet); font-family: var(--wa-font-family-body); font-size: var(--wa-font-size-2xs); font-weight: 700; border-radius: 3px; transition: color 0.1s, background 0.1s; line-height: 16px; }
.size-btn:hover { color: var(--wa-color-text-normal); background: var(--wa-color-surface-lowered); }
.size-btn.active { background: var(--wa-color-text-link); color: #ffffff; }

.copy-link-btn { padding: 3px 5px; background: transparent; border: none; cursor: pointer; color: var(--wa-color-text-quiet); border-radius: 3px; transition: color 0.15s; line-height: 0; flex-shrink: 0; }
.copy-link-btn:hover { color: var(--wa-color-text-link); }
.copy-link-btn.copied { color: var(--wa-color-success-on-normal); }

#terminal-session-meta { flex-shrink: 0; white-space: nowrap; font-size: var(--wa-font-size-xs); color: var(--wa-color-text-quiet); }

.close-session-btn { padding: 3px 5px; background: transparent; border: none; cursor: pointer; color: var(--wa-color-text-quiet); border-radius: 3px; transition: color 0.15s; line-height: 0; flex-shrink: 0; }
.close-session-btn:hover { color: var(--wa-color-danger-on-normal); }

.voice-mic-btn { padding: 3px 5px; background: transparent; border: none; cursor: pointer; color: var(--wa-color-text-quiet); border-radius: 3px; transition: color 0.15s, background 0.15s; line-height: 0; flex-shrink: 0; }
.voice-mic-btn:hover { color: var(--wa-color-text-link); }
.voice-mic-btn.recording { color: #ff4444; animation: voice-pulse 1.2s ease-in-out infinite; }
@keyframes voice-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }

#search-overlay { position: absolute; top: 6px; right: 6px; z-index: 10; display: flex; align-items: center; gap: 4px; background: var(--wa-color-surface-lowered); border: 1px solid var(--wa-color-text-link); border-radius: 5px; padding: 4px 8px; box-shadow: 0 4px 16px rgba(0,0,0,0.5); }
#search-input { background: transparent; border: none; outline: none; color: var(--wa-color-text-normal); font-family: var(--wa-font-family-body); font-size: var(--wa-portal-font-base); width: 180px; }
#search-input.no-match { color: var(--wa-color-danger-on-normal); }
#search-input::placeholder { color: var(--wa-color-text-quiet); }
.search-btn { background: transparent; border: none; cursor: pointer; color: var(--wa-color-text-quiet); padding: 1px 5px; border-radius: 3px; font-size: var(--wa-font-size-s); line-height: 1; transition: color 0.1s; font-family: var(--wa-font-family-body); }
.search-btn:hover { color: var(--wa-color-text-normal); }

.worklog-section { border-top: 1px solid var(--wa-color-surface-border); padding: 8px 8px 4px; }
.worklog-section.compact { padding-bottom: 8px; }
.worklog-section-label { font-size: var(--wa-font-size-2xs); font-weight: 700; color: var(--wa-color-text-quiet); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 4px; padding: 0 2px; display: flex; align-items: center; gap: 5px; }
.worklog-compact-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 3px 2px 0; }
.worklog-compact-count { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); }
.worklog-expand-btn { border: 0; background: transparent; padding: 0; cursor: pointer; color: var(--wa-color-text-quiet); font: inherit; font-size: var(--wa-font-size-2xs); text-decoration: none; }
.worklog-expand-btn:hover { color: var(--wa-color-text-link); }
.worklog-section-label .review-count { background: var(--wa-color-danger-on-normal); color: var(--wa-color-surface-default); font-size: 8px; font-weight: 700; padding: 0 5px; border-radius: 8px; line-height: 14px; animation: waiting-pulse 1.4s ease-in-out infinite; }
.worklog-item { padding: 5px 8px; cursor: pointer; border-radius: 4px; margin: 1px 0; transition: background 0.1s; border: 1px solid transparent; }
.worklog-item:hover { background: var(--wa-color-surface-lowered); border-color: var(--wa-color-surface-border); }
.worklog-item-title { font-size: var(--wa-font-size-xs); color: var(--wa-color-text-quiet); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: center; gap: 5px; }
.worklog-item-title .priority-num { color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-2xs); font-weight: 600; flex-shrink: 0; }
.worklog-item.pending-review { border-color: rgba(247, 118, 142, 0.25); background: rgba(247, 118, 142, 0.05); }
.worklog-item.pending-review:hover { background: rgba(247, 118, 142, 0.1); border-color: rgba(247, 118, 142, 0.4); }
.worklog-item.pending-review .worklog-item-title { color: var(--wa-color-danger-on-normal); }
.review-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--wa-color-danger-on-normal); flex-shrink: 0; animation: waiting-pulse 1.4s ease-in-out infinite; }
.worklog-item-meta { font-size: var(--wa-font-size-3xs); color: var(--wa-color-text-quiet); margin-top: 1px; padding-left: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.view-backlog-link { display: block; font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); text-align: center; padding: 4px 0 2px; cursor: pointer; transition: color 0.1s; text-decoration: none; }
.view-backlog-link:hover { color: var(--wa-color-text-link); }

.backlog-modal .modal { width: 560px; max-height: 80vh; display: flex; flex-direction: column; }
.backlog-list { flex: 1; overflow-y: auto; max-height: 60vh; }
.backlog-tabs { display: flex; gap: 1px; background: var(--wa-color-surface-border); border-radius: 4px; padding: 1px; margin-bottom: 12px; }
.backlog-tab { flex: 1; padding: 5px 10px; background: transparent; border: none; cursor: pointer; color: var(--wa-color-text-quiet); font-family: var(--wa-font-family-body); font-size: var(--wa-font-size-xs); font-weight: 600; border-radius: 3px; transition: color 0.1s, background 0.1s; }
.backlog-tab:hover { color: var(--wa-color-text-quiet); }
.backlog-tab.active { background: var(--wa-color-text-link); color: #fff; }
.backlog-tab .tab-count { font-weight: 400; opacity: 0.7; margin-left: 3px; }
.backlog-item { padding: 10px 12px; border-radius: 5px; margin: 3px 0; border: 1px solid var(--wa-color-surface-border); transition: background 0.1s; }
.backlog-item:hover { background: var(--wa-color-surface-lowered); }
.backlog-item-header { display: flex; align-items: flex-start; gap: 8px; }
.backlog-item-num { color: var(--wa-color-text-quiet); font-size: var(--wa-font-size-xs); font-weight: 700; flex-shrink: 0; min-width: 18px; }
.backlog-item-title { font-size: var(--wa-portal-font-base); color: var(--wa-color-text-normal); flex: 1; min-width: 0; }
.backlog-item-desc { font-size: var(--wa-font-size-xs); color: var(--wa-color-text-quiet); margin-top: 4px; padding-left: 26px; line-height: 1.4; }
.backlog-item-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 6px; padding-left: 26px; }
.backlog-item-requester { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); }
.backlog-start-btn { padding: 3px 10px; background: transparent; color: var(--wa-color-text-link); border: 1px solid var(--wa-color-surface-border); border-radius: 3px; cursor: pointer; font-family: var(--wa-font-family-body); font-size: var(--wa-font-size-2xs); transition: background 0.1s, border-color 0.1s; }
.backlog-start-btn:hover { background: var(--wa-color-surface-lowered); border-color: var(--wa-color-text-link); }
.backlog-item.pending-review { border-color: rgba(247, 118, 142, 0.3); }
.backlog-item.completed { opacity: 0.5; }
.backlog-status-badge { font-size: var(--wa-font-size-3xs); padding: 1px 6px; border-radius: 8px; font-weight: 600; flex-shrink: 0; }
.backlog-status-badge.pending { color: var(--wa-color-danger-on-normal); background: rgba(247, 118, 142, 0.15); border: 1px solid rgba(247, 118, 142, 0.3); }
.backlog-status-badge.completed { color: var(--wa-color-text-quiet); background: var(--wa-color-surface-lowered); border: 1px solid var(--wa-color-surface-border); }

.review-modal .modal { width: 480px; }
.review-item-preview { background: var(--wa-color-surface-lowered); border: 1px solid var(--wa-color-surface-border); border-radius: 5px; padding: 12px; margin-bottom: 14px; }
.review-item-preview h3 { font-size: var(--wa-font-size-s); color: var(--wa-color-text-normal); font-weight: 500; margin-bottom: 6px; }
.review-item-preview p { font-size: var(--wa-font-size-xs); color: var(--wa-color-text-quiet); line-height: 1.5; }
.review-item-preview .review-requester { font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); margin-top: 6px; }
.review-actions { display: flex; gap: 8px; margin-top: 14px; }
.review-btn { flex: 1; padding: 8px 12px; border: none; border-radius: 4px; cursor: pointer; font-family: var(--wa-font-family-body); font-size: var(--wa-portal-font-base); font-weight: 500; transition: opacity 0.1s; }
.review-btn:hover { opacity: 0.85; }
.review-btn.accept { background: var(--wa-color-success-on-normal); color: var(--wa-color-surface-default); }
.review-btn.change { background: var(--wa-color-warning-on-normal); color: var(--wa-color-surface-default); }
.review-btn.decline { background: var(--wa-color-danger-on-normal); color: var(--wa-color-surface-default); }
.review-edit-fields { display: none; margin-top: 12px; }
.review-edit-fields.visible { display: block; }
.review-edit-fields label { display: block; font-size: var(--wa-font-size-2xs); color: var(--wa-color-text-quiet); margin-bottom: 4px; margin-top: 10px; }
.review-edit-fields label:first-child { margin-top: 0; }
.review-edit-fields input, .review-edit-fields textarea { width: 100%; background: var(--wa-color-surface-lowered); border: 1px solid var(--wa-color-surface-border); border-radius: 4px; color: var(--wa-color-text-normal); font-family: var(--wa-font-family-body); font-size: var(--wa-portal-font-base); padding: 6px 8px; outline: none; }
.review-edit-fields input:focus, .review-edit-fields textarea:focus { border-color: var(--wa-color-text-link); }
.review-edit-fields textarea { min-height: 80px; resize: vertical; }
.review-edit-actions { display: flex; gap: 8px; margin-top: 10px; justify-content: flex-end; }

.build-label {
  font-size: var(--wa-font-size-2xs);
  color: var(--wa-color-text-quiet);
  flex: 1;
  text-align: center;
  letter-spacing: 0.02em;
}

/* === Scrollbar === */
::-webkit-scrollbar { width: 5px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--wa-color-surface-border); border-radius: 3px; }
