/* SpyglassAudit — app styles. Built on the Spyglass brand tokens. */

body { background: var(--bg-secondary); color: var(--text-primary); }
a { color: var(--color-teal); }

/* ── top bar ─────────────────────────────────────────────────────────── */
.topbar {
  display: flex; align-items: center; gap: 16px;
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border-default);
  padding: 14px 28px;
}
.lockup { display: flex; align-items: center; gap: 10px; text-decoration: none; }
.mark { width: 30px; height: 30px; color: var(--color-teal); flex: none; }
.wordmark {
  font-family: var(--font-display); font-weight: 600;
  font-size: 22px; letter-spacing: var(--tracking-tight);
}
.wm-teal { color: var(--color-teal); }
.wm-dark { color: var(--color-midnight); }
.topbar-tag { margin-left: auto; font-size: 13px; color: var(--text-secondary); }
.topbar-user {
  margin-left: 18px; font-size: 13px; color: var(--text-secondary);
  font-family: var(--font-mono);
}
.topbar-user a { color: var(--color-teal); }

/* ── login page ────────────────────────────────────────────────────────── */
.login {
  max-width: 420px; margin: 8vh auto 0; text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 6px;
}
.login-mark { width: 56px; height: 56px; color: var(--color-teal); margin-bottom: 8px; }
.login h1 { font-size: var(--text-2xl); }
.login-sub { color: var(--text-secondary); margin: 4px 0 18px; }
.login-note { color: var(--text-secondary); font-size: var(--text-sm); margin: 4px 0 14px; }
.login-error { width: 100%; margin-bottom: 16px; text-align: left; }
.btn-lg { font-size: var(--text-lg); padding: 12px 28px; }

.container { max-width: 1080px; margin: 0 auto; padding: 32px 28px 72px; }

/* ── headings ────────────────────────────────────────────────────────── */
h1 {
  font-family: var(--font-display); font-weight: 700;
  font-size: var(--text-3xl); letter-spacing: var(--tracking-tight);
  margin: 0;
}
h2 { font-family: var(--font-display); font-weight: 600; }
.section-title {
  font-size: var(--text-xl); margin: 36px 0 14px;
  display: flex; align-items: center; gap: 10px;
}
.group-count, .num-badge {
  font-family: var(--font-mono); font-size: var(--text-sm);
  background: var(--color-teal-pale); color: var(--color-teal-dark);
  border-radius: var(--radius-full); padding: 1px 9px;
}

/* ── hero ────────────────────────────────────────────────────────────── */
.hero { margin-bottom: 24px; }
.hero-sub { color: var(--text-secondary); font-size: var(--text-lg); margin: 8px 0 0; max-width: 620px; }

/* ── panels & cards ──────────────────────────────────────────────────── */
.panel {
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: 20px;
}

/* ── global AI-review toggle (in the Registered properties header) ────── */
.ai-toggle {
  margin-left: auto; display: inline-flex; align-items: center; gap: 7px;
  font-family: var(--font-sans); font-weight: 500; font-size: var(--text-sm);
  letter-spacing: normal; text-transform: none; color: var(--text-secondary);
  cursor: pointer; user-select: none;
}
.ai-toggle input { accent-color: var(--color-teal); cursor: pointer; margin: 0; }
.ai-toggle-info {
  display: inline-flex; align-items: center; justify-content: center;
  width: 15px; height: 15px; border-radius: var(--radius-full);
  background: var(--color-teal-pale); color: var(--color-teal-dark);
  font-size: 10px; font-weight: 700; font-style: italic;
}

/* ── ad-hoc audit (collapsible, secondary to the portfolio) ──────────── */
details.adhoc { margin: 28px 0 8px; }
details.adhoc > summary {
  cursor: pointer; width: fit-content; list-style: none;
  font-weight: 600; font-size: var(--text-sm); color: var(--text-secondary);
  letter-spacing: var(--tracking-wide); text-transform: uppercase; padding: 4px 0;
}
details.adhoc > summary::-webkit-details-marker { display: none; }
details.adhoc > summary::before { content: "\25B8\00a0"; color: var(--text-secondary); }
details.adhoc[open] > summary::before { content: "\25BE\00a0"; }
.adhoc-lead { margin: 8px 0 12px; }
.adhoc-row { display: flex; gap: 10px; max-width: 560px; }
.adhoc-row input {
  flex: 1; font-family: var(--font-mono); font-size: var(--text-base);
  padding: 10px 12px; border: 1px solid var(--border-default);
  border-radius: var(--radius); background: var(--bg-primary);
  color: var(--text-primary);
}
.adhoc-row input:focus {
  outline: 2px solid var(--color-teal); outline-offset: 1px; border-color: transparent;
}
.adhoc-note { font-size: 12px; color: var(--text-secondary); margin: 10px 0 0; }
.adhoc-note code, .mono { font-family: var(--font-mono); }

/* ── buttons ─────────────────────────────────────────────────────────── */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--font-sans); font-weight: 600; font-size: var(--text-base);
  border-radius: var(--radius); padding: 10px 16px;
  border: 1px solid transparent; cursor: pointer; text-decoration: none;
  transition: background var(--transition), color var(--transition);
}
.btn-sm { font-size: var(--text-sm); padding: 7px 12px; }
.btn-primary { background: var(--color-teal); color: #fff; }
.btn-primary:hover { background: var(--color-teal-dark); }
.btn-ghost {
  background: var(--color-teal-pale); color: var(--color-teal-dark);
  border-color: rgba(var(--color-teal-rgb), 0.2);
}
.btn-ghost:hover { background: #d6f7fb; }

/* ── property grid ───────────────────────────────────────────────────── */
.prop-grid {
  display: grid; gap: 16px;
  grid-template-columns: repeat(auto-fill, minmax(258px, 1fr));
}
.prop-card {
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: 18px 18px 16px;
  display: flex; flex-direction: column; gap: 6px;
}
.prop-head { display: flex; align-items: center; justify-content: space-between; }
.prop-name { font-family: var(--font-display); font-weight: 600; font-size: var(--text-lg); }
.prop-domain { font-family: var(--font-mono); font-size: var(--text-sm); color: var(--text-secondary); }
.prop-meta { font-size: var(--text-sm); color: var(--text-secondary); margin-top: 6px; }
.prop-meta-sub { font-size: 12px; color: var(--text-secondary); }
.prop-meta--empty { font-style: italic; }
.prop-actions { display: flex; gap: 8px; align-items: center; margin-top: 12px; }

/* ── score pills & bands ─────────────────────────────────────────────── */
.score-pill {
  font-family: var(--font-mono); font-weight: 500;
  border-radius: var(--radius-full); padding: 3px 11px;
  font-size: var(--text-sm); color: #fff;
}
.score-pill--sm { padding: 2px 9px; font-size: 12px; }
.band-text { font-weight: 600; }

.band-excellent  { background: var(--color-pine); }
.band-good       { background: var(--color-teal); }
.band-fair       { background: var(--color-amber); }
.band-poor       { background: var(--color-coral); }
.band-critical   { background: #B91C1C; }
.band-text.band-excellent { background: none; color: var(--color-pine); }
.band-text.band-good      { background: none; color: var(--color-teal-dark); }
.band-text.band-fair      { background: none; color: var(--color-amber); }
.band-text.band-poor      { background: none; color: var(--color-coral); }
.band-text.band-critical  { background: none; color: #B91C1C; }

/* ── recent runs table ───────────────────────────────────────────────── */
.run-table, .page-table { width: 100%; border-collapse: collapse; font-size: var(--text-sm); }
.run-table th, .page-table th {
  text-align: left; font-weight: 600; font-size: 12px;
  letter-spacing: var(--tracking-wide); text-transform: uppercase;
  color: var(--text-secondary); padding: 8px 10px;
  border-bottom: 1px solid var(--border-default);
}
.run-table td, .page-table td {
  padding: 9px 10px; border-bottom: 1px solid var(--border-default);
}
.run-table tbody tr { cursor: pointer; transition: background var(--transition); }
.run-table tbody tr:hover { background: var(--color-teal-pale); }
.num { text-align: right; }
td.mono, .mono { font-family: var(--font-mono); }

/* ── report header ───────────────────────────────────────────────────── */
.back-link { font-size: var(--text-sm); text-decoration: none; }
.report-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; margin: 14px 0 22px; flex-wrap: wrap;
}
.report-sub { color: var(--text-secondary); font-size: var(--text-sm); margin: 8px 0 0; }
.report-head-actions { display: flex; gap: 8px; align-items: center; }

/* ── score row ───────────────────────────────────────────────────────── */
/* Four score cards for MGS properties (Standard / AEO / MGS / Playbook),
   two for external (Standard / AEO — MGS + Playbook are MGS-only signals).
   Severity cards always span the full row. */
.score-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 16px; }
.score-row > .sev-cards { grid-column: 1 / -1; }
.score-row.score-row-two { grid-template-columns: 1fr 1fr; }
@media (max-width: 1100px) {
  .score-row { grid-template-columns: repeat(2, 1fr); }
}

/* "External" tag on the dashboard for non-MGS properties. */
.prop-tag {
  display: inline-block; margin-left: 6px; padding: 1px 8px;
  font-size: 11px; font-weight: 500; letter-spacing: var(--tracking-wider);
  text-transform: uppercase; color: var(--text-secondary);
  background: var(--bg-surface-alt, #F4F8FA);
  border: 1px solid var(--border-default); border-radius: 999px;
  vertical-align: middle;
}
.score-card {
  border-radius: var(--radius-lg); padding: 22px; color: #fff;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  box-shadow: var(--shadow);
}
.score-number { font-family: var(--font-mono); font-size: 56px; font-weight: 500; line-height: 1; }
.score-label { font-family: var(--font-display); font-weight: 600; font-size: var(--text-lg); margin-top: 6px; }
.score-caption {
  font-size: 11px; letter-spacing: var(--tracking-wider);
  text-transform: uppercase; opacity: 0.85; margin-top: 4px;
}
/* Sub-line under a score caption — used for the "5/13 plays" breakdown
   on the Playbook coverage card. Smaller and looser than the caption. */
.score-caption .score-sub {
  display: inline-block; margin-top: 2px;
  font-size: 10px; opacity: 0.85; text-transform: none;
  letter-spacing: var(--tracking-normal, 0);
  font-variant-numeric: tabular-nums;
}
.sev-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.sev-card {
  background: var(--bg-surface); border: 1px solid var(--border-default);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
  padding: 20px; border-left-width: 4px;
}
.sev-card.sev-high   { border-left-color: var(--color-coral); }
.sev-card.sev-medium { border-left-color: var(--color-amber); }
.sev-card.sev-low    { border-left-color: var(--color-muted); }
.sev-card.sev-info   { border-left-color: var(--color-sapphire); }
.sev-count { font-family: var(--font-mono); font-size: var(--text-3xl); font-weight: 500; }
.sev-name { font-size: var(--text-sm); color: var(--text-secondary); margin-top: 2px; }

/* ── playbook coverage panel ─────────────────────────────────────────── */
.playbook-list {
  list-style: none; padding: 0; margin: 8px 0 0;
  background: var(--bg-surface); border: 1px solid var(--border-default);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow: hidden;
}
.play-row {
  display: grid;
  grid-template-columns: 16px 32px 1fr;
  grid-auto-flow: column;
  grid-auto-columns: auto;
  gap: 12px; align-items: center;
  padding: 12px 16px; border-bottom: 1px solid var(--border-default);
}
.play-row:last-child { border-bottom: none; }
.play-dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--color-muted); justify-self: center;
}
.play-detected .play-dot { background: var(--color-pine); }
.play-detected .play-name { color: var(--text-primary); }
.play-undetected .play-name { color: var(--text-secondary); }
.play-id { color: var(--text-secondary); font-size: var(--text-sm); }
.play-name { font-size: var(--text-base); }
.play-notes {
  font-size: var(--text-sm); color: var(--text-secondary);
  text-align: right;
}
.play-evidence { font-size: var(--text-sm); }
.play-evidence summary { cursor: pointer; color: var(--color-teal-dark); }
.play-evidence ul { list-style: none; padding: 8px 0 0; margin: 0; }
.play-evidence li { padding: 2px 0; word-break: break-all; }
.play-refs {
  font-size: var(--text-sm); color: var(--text-secondary);
  justify-self: end;
}
.play-refs .play-ref {
  color: var(--color-teal-dark); text-decoration: none;
  border-bottom: 1px dotted currentColor;
}
.play-refs .play-ref:hover { color: var(--color-teal); }

.play-catalog-refs {
  margin: 8px 0 0; font-size: var(--text-sm);
  display: flex; align-items: baseline; gap: 8px;
}
.play-ref-label {
  color: var(--text-secondary); font-weight: 500;
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  font-size: 11px;
}

/* annotation badges + inline forms */
.play-status {
  display: inline-flex; align-items: baseline; gap: 6px;
  padding: 2px 8px; border-radius: var(--radius-sm);
  font-size: var(--text-sm); font-weight: 500;
  border: 1px solid currentColor;
}
.play-status-skipped {
  color: var(--text-secondary); background: var(--bg-muted, transparent);
}
.play-status-done_alternate {
  color: var(--color-pine); background: rgba(72, 134, 100, 0.08);
}
.play-status-note {
  font-weight: 400; color: var(--text-secondary);
  font-size: var(--text-sm); max-width: 320px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.play-anno-form { font-size: var(--text-sm); }
.play-anno-add summary {
  cursor: pointer; color: var(--text-secondary);
  border: 1px dashed var(--border-default);
  padding: 1px 8px; border-radius: var(--radius-sm);
  list-style: none;
}
.play-anno-add summary::-webkit-details-marker { display: none; }
.play-anno-add summary:hover { color: var(--color-teal-dark); border-color: currentColor; }
.play-anno-fields {
  display: flex; gap: 6px; align-items: center;
  margin-top: 6px; padding: 8px; background: var(--bg-surface);
  border: 1px solid var(--border-default); border-radius: var(--radius-md);
}
.play-anno-fields select,
.play-anno-fields input[type="text"] {
  font-size: var(--text-sm); padding: 4px 6px;
  border: 1px solid var(--border-default); border-radius: var(--radius-sm);
}
.play-anno-fields input[type="text"] { min-width: 220px; }
.play-anno-fields button {
  background: var(--color-teal-dark); color: white;
  border: none; padding: 4px 12px;
  border-radius: var(--radius-sm); cursor: pointer;
}
.play-anno-clear {
  background: transparent; border: none; color: var(--text-secondary);
  cursor: pointer; font-size: var(--text-sm); padding: 0 4px;
  text-decoration: underline; text-decoration-style: dotted;
}
.play-anno-clear:hover { color: var(--color-coral); }
/* Annotated rows get a subtle visual mute so detected/undetected
   colouring doesn't override the "this is handled, ignore me" signal. */
.play-anno-skipped .play-name,
.play-anno-done_alternate .play-name { color: var(--text-secondary); }

/* ── tracked items (human-confirmed checklist) ───────────────────────── */
.tracked-list {
  list-style: none; padding: 0; margin: 8px 0 16px;
  background: var(--bg-surface); border: 1px solid var(--border-default);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow: hidden;
}
.tracked-row {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 11px 16px; border-bottom: 1px solid var(--border-default);
}
.tracked-row:last-child { border-bottom: none; }
.tracked-dot {
  width: 10px; height: 10px; border-radius: 50%; flex: none;
  background: var(--color-muted);
}
.tracked-pass .tracked-dot { background: var(--color-pine); }
.tracked-fail .tracked-dot { background: var(--color-coral); }
.tracked-na   .tracked-dot { background: var(--color-amber); }
.tracked-label { font-size: var(--text-base); flex: 1; min-width: 200px; }
.tracked-method {
  font-size: 11px; color: var(--text-secondary); margin-left: 8px;
  border: 1px solid var(--border-default); border-radius: var(--radius-full);
  padding: 0 7px;
}
.tracked-status {
  font-family: var(--font-mono); font-size: 11px; color: var(--text-secondary);
}
.tracked-status-pass { color: var(--color-pine); }
.tracked-status-fail { color: var(--color-coral); }
.tracked-status-na   { color: var(--color-amber); }
.tracked-note { font-size: 12px; color: var(--text-secondary); font-style: italic; }
.tracked-form { font-size: var(--text-sm); }
.tracked-form summary {
  cursor: pointer; font-size: 11px; color: var(--color-teal-dark);
  list-style: none;
}
.tracked-form summary::-webkit-details-marker { display: none; }
.tracked-fields { display: flex; gap: 6px; align-items: center; margin-top: 8px; }
.tracked-fields select, .tracked-fields input {
  font-size: var(--text-sm); padding: 4px 6px;
  border: 1px solid var(--border-default); border-radius: var(--radius-sm);
}
.tracked-clear-form { display: inline; margin: 0; }

/* ── crawl strip ─────────────────────────────────────────────────────── */
.crawl-strip {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px;
  background: var(--border-default); border: 1px solid var(--border-default);
  border-radius: var(--radius-lg); overflow: hidden; margin-bottom: 8px;
}
.crawl-stat { background: var(--bg-surface); padding: 14px 16px; }
.crawl-k {
  display: block; font-size: 11px; letter-spacing: var(--tracking-wide);
  text-transform: uppercase; color: var(--text-secondary);
}
.crawl-v { font-family: var(--font-mono); font-size: var(--text-base); }
.ok  { color: var(--color-pine); font-weight: 500; }
.bad { color: var(--color-coral); font-weight: 500; }

/* ── findings ────────────────────────────────────────────────────────── */
.finding {
  background: var(--bg-surface); border: 1px solid var(--border-default);
  border-left-width: 4px; border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm); padding: 16px 18px; margin-bottom: 12px;
}
.sev-border-high   { border-left-color: var(--color-coral); }
.sev-border-medium { border-left-color: var(--color-amber); }
.sev-border-low    { border-left-color: var(--color-muted); }
.sev-border-info   { border-left-color: var(--color-sapphire); }
.finding-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.finding-title { font-family: var(--font-display); font-weight: 600; font-size: var(--text-lg); }
.finding-count {
  margin-left: auto; font-family: var(--font-mono);
  font-size: var(--text-sm); color: var(--text-secondary);
}
.sev-chip {
  font-family: var(--font-mono); font-size: 11px; font-weight: 500;
  letter-spacing: var(--tracking-wide); text-transform: uppercase;
  padding: 3px 8px; border-radius: var(--radius-sm); color: #fff;
}
.sev-chip.sev-high   { background: var(--color-coral); }
.sev-chip.sev-medium { background: var(--color-amber); }
.sev-chip.sev-low    { background: var(--color-muted); }
.sev-chip.sev-info   { background: var(--color-sapphire); }
/* Tier indicator on playbook entries — auto-detected plays count toward
   the Playbook coverage score, manual-review plays are listed for
   completeness only. Quieter than .sev-chip on purpose; this is
   classification, not severity. */
.play-mode {
  margin-left: auto;
  font-family: var(--font-mono); font-size: 10px; font-weight: 500;
  letter-spacing: var(--tracking-wider); text-transform: uppercase;
  padding: 2px 7px; border-radius: 999px;
  border: 1px solid var(--border-default);
  color: var(--text-secondary); background: var(--bg-surface-alt, transparent);
}
.play-mode-auto { color: var(--color-teal-dark); border-color: var(--color-teal-dark); }
.play-mode-manual { color: var(--text-secondary); }
.finding-id { font-size: 12px; color: var(--text-secondary); margin: 6px 0 8px; }
.finding-fix { font-size: var(--text-base); margin: 0; }
.finding-urls { margin-top: 10px; }
.finding-urls summary {
  cursor: pointer; font-size: var(--text-sm); font-weight: 500;
  color: var(--color-teal-dark);
}
.finding-urls ul { margin: 10px 0 0; padding-left: 0; list-style: none; }
.finding-urls li {
  display: flex; align-items: center; gap: 10px;
  font-size: var(--text-sm); color: var(--text-secondary); padding: 3px 0;
}
.finding-urls li .url-text { word-break: break-all; }
.finding-urls li a.url-text { color: var(--color-teal-dark); text-decoration: none; }
.finding-urls li a.url-text:hover { text-decoration: underline; }
/* The "-> 404" / "(matched: …)" / "(N em dashes)" suffix shown next to
   the linked URL. Keeps the anchor target = just the URL while still
   surfacing the per-URL context inline. */
.url-decoration {
  color: var(--text-secondary); font-size: var(--text-sm);
  margin-left: 6px; flex-shrink: 0;
}
.finding-urls li { flex-wrap: wrap; }
.play-evidence li a.url-text { color: var(--color-teal-dark); text-decoration: none; }
.play-evidence li a.url-text:hover { text-decoration: underline; }
.url-cell a { color: inherit; text-decoration: none; }
.url-cell a:hover { color: var(--color-teal-dark); text-decoration: underline; }

/* ── dismiss controls ──────────────────────────────────────────────────── */
.dismiss-inline { display: inline; margin: 0; }
.dismiss-inline button,
.dismiss-check button,
.dismiss-selected-btn {
  font-family: var(--font-sans); font-size: 11px; font-weight: 500;
  color: var(--text-secondary); background: transparent;
  border: 1px solid var(--border-default); border-radius: var(--radius-sm);
  padding: 2px 8px; cursor: pointer;
  transition: background var(--transition), color var(--transition);
}
.dismiss-inline button:hover,
.dismiss-check button:hover,
.dismiss-selected-btn:not([disabled]):hover {
  color: #fff; background: var(--color-coral); border-color: var(--color-coral);
}
.dismiss-check { margin-top: 12px; }

/* per-finding URL checklist (multi-select dismiss) */
.dismiss-urls { margin: 10px 0 0; }
.dismiss-urls-bar {
  display: flex; align-items: center; gap: 14px;
  padding-bottom: 8px; border-bottom: 1px solid var(--border-subtle, var(--border-default));
}
.url-selectall {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 500; color: var(--text-secondary);
  cursor: pointer; user-select: none;
}
.url-selectall input, .url-pick input { accent-color: var(--color-teal); cursor: pointer; margin: 0; }
.dismiss-selected-btn[disabled] { opacity: 0.5; cursor: default; }
.dismiss-urls ul { margin: 8px 0 0; padding-left: 0; list-style: none; }
.url-pick { display: inline-flex; align-items: center; margin: 0; }

.dismissed-panel .section-title { margin-top: 0; }
.dismissed-intro {
  font-size: var(--text-sm); color: var(--text-secondary);
  margin: 0 0 14px; max-width: 660px;
}
.dismissed-rules { list-style: none; margin: 0; padding: 0; }
.dismissed-rule {
  display: flex; align-items: center; gap: 14px; padding: 11px 0;
  border-bottom: 1px solid var(--border-default);
}
.dismissed-rule:last-child { border-bottom: none; }
.dismissed-rule-main {
  flex: 1; display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
}
.dismissed-label { font-size: var(--text-sm); font-weight: 500; color: var(--text-primary); }
.dismissed-note { font-size: var(--text-sm); color: var(--text-secondary); }
.dismissed-when { font-size: 12px; color: var(--text-secondary); }
.restore-form { margin: 0; }
.btn-restore {
  font-family: var(--font-sans); font-size: var(--text-sm); font-weight: 600;
  color: var(--color-teal-dark); background: var(--color-teal-pale);
  border: 1px solid rgba(var(--color-teal-rgb), 0.25);
  border-radius: var(--radius); padding: 6px 14px; cursor: pointer;
  transition: background var(--transition), color var(--transition);
}
.btn-restore:hover { background: var(--color-teal); color: #fff; }

/* ── markdown copy + preview ───────────────────────────────────────────── */
.md-source-hidden { display: none; }
.btn-copied {
  background: var(--color-pine) !important;
  color: #fff !important;
  border-color: var(--color-pine) !important;
}

.md-rendered { padding: 32px 40px; max-width: 920px; margin: 0 auto; }
.md-rendered > :first-child { margin-top: 0; }
.md-rendered h1 {
  font-family: var(--font-display); font-weight: 700;
  font-size: var(--text-3xl); letter-spacing: var(--tracking-tight);
  margin: 28px 0 14px;
}
.md-rendered h2 {
  font-family: var(--font-display); font-weight: 600;
  font-size: var(--text-2xl); margin: 32px 0 12px;
  border-bottom: 1px solid var(--border-default); padding-bottom: 8px;
}
.md-rendered h3 {
  font-family: var(--font-display); font-weight: 600;
  font-size: var(--text-xl); margin: 24px 0 10px;
}
.md-rendered h4 {
  font-family: var(--font-display); font-weight: 600;
  font-size: var(--text-lg); margin: 20px 0 8px;
  color: var(--color-teal-dark);
}
.md-rendered p { font-size: var(--text-base); line-height: 1.6; margin: 0 0 12px; }
.md-rendered ul, .md-rendered ol { padding-left: 22px; margin: 0 0 14px; }
.md-rendered li { font-size: var(--text-sm); line-height: 1.55; margin-bottom: 3px; word-break: break-all; }
.md-rendered code {
  font-family: var(--font-mono); font-size: 13px;
  background: var(--color-cloud); padding: 2px 5px; border-radius: 3px;
}
.md-rendered pre {
  background: var(--color-cloud); border: 1px solid var(--border-default);
  padding: 12px 14px; border-radius: var(--radius);
  overflow-x: auto; font-size: 13px; margin: 0 0 14px;
}
.md-rendered pre code { background: transparent; padding: 0; }
.md-rendered table {
  width: 100%; border-collapse: collapse; margin: 12px 0 18px;
  font-size: var(--text-sm);
}
.md-rendered th, .md-rendered td {
  padding: 8px 10px; border-bottom: 1px solid var(--border-default);
  text-align: left;
}
.md-rendered th { background: var(--color-cloud); font-weight: 600; }
.md-rendered hr {
  border: 0; border-top: 1px solid var(--border-default); margin: 24px 0;
}
.md-rendered strong { font-weight: 600; }
.md-rendered a { color: var(--color-teal); }
.panel-summary {
  cursor: pointer; font-family: var(--font-display);
  font-weight: 600; font-size: var(--text-base);
}

/* ── checks reference ──────────────────────────────────────────────────── */
.scoring-panel { margin-bottom: 8px; }
.scoring-h {
  font-family: var(--font-display); font-weight: 600;
  font-size: var(--text-xl); margin: 0 0 6px;
}
.scoring-intro { color: var(--text-secondary); margin: 0 0 16px; max-width: 660px; }
/* Score-explainer dl on the /checks scoring panel — one block per score
   (Standard / AEO / MGS brand / Playbook) so readers can immediately see
   what each number on the report header is measuring. */
.score-explainer { margin: 0 0 20px; display: grid; gap: 12px; max-width: 760px; }
.score-explainer dt {
  font-weight: 600; font-family: var(--font-display);
  color: var(--text-primary); margin-bottom: 2px;
}
.score-explainer dd {
  margin: 0; color: var(--text-secondary); font-size: var(--text-sm);
  line-height: 1.5;
}
.scoring-grid {
  display: grid; gap: 18px;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
.scoring-table { width: 100%; border-collapse: collapse; font-size: var(--text-sm); }
.scoring-table th {
  text-align: left; font-weight: 600; font-size: 12px;
  letter-spacing: var(--tracking-wide); text-transform: uppercase;
  color: var(--text-secondary); padding: 8px 10px;
  border-bottom: 1px solid var(--border-default);
}
.scoring-table td {
  padding: 9px 10px; border-bottom: 1px solid var(--border-default);
}
.cat-title {
  font-family: var(--font-display); font-weight: 600;
  font-size: var(--text-lg); margin: 28px 0 12px;
  display: flex; align-items: center; gap: 10px;
}

/* ── trend chart ───────────────────────────────────────────────────────── */
.trend-chart { width: 100%; height: 240px; display: block; }
.grid-line { stroke: var(--border-default); stroke-width: 1; }
.grid-label { fill: var(--text-secondary); font-family: var(--font-mono); font-size: 10px; }
.trend-line {
  fill: none; stroke: var(--color-teal); stroke-width: 2.5;
  stroke-linejoin: round; stroke-linecap: round;
}
.trend-dot { fill: var(--color-teal); stroke: #fff; stroke-width: 2; }
.trend-dot-label {
  fill: var(--text-primary); font-family: var(--font-mono);
  font-size: 11px; font-weight: 500;
}

/* ── appendix ────────────────────────────────────────────────────────── */
.appendix summary {
  cursor: pointer; font-weight: 600; font-size: var(--text-base);
}
.appendix .page-table { margin-top: 14px; }
.url-cell { max-width: 460px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.empty-state { text-align: center; }

/* ── running page ────────────────────────────────────────────────────── */
.running { text-align: center; padding: 60px 20px; }
.running .mark { width: 64px; height: 64px; margin-bottom: 18px; }
.mark-pulse { animation: pulse 1.4s ease-in-out infinite; }
@keyframes pulse { 0%,100% { opacity: 0.35; } 50% { opacity: 1; } }
.running-domain { color: var(--text-secondary); margin: 6px 0 22px; }
.running-stat { font-size: var(--text-lg); font-weight: 500; }
.running-meta { font-family: var(--font-mono); color: var(--text-secondary); margin-top: 8px; }
.error-box {
  margin: 22px auto 0; max-width: 560px; text-align: left;
  background: #FEF2F2; border: 1px solid var(--color-coral);
  color: #991B1B; border-radius: var(--radius); padding: 12px 14px;
  font-family: var(--font-mono); font-size: var(--text-sm);
}

@media (max-width: 680px) {
  .score-row { grid-template-columns: 1fr; }
  .sev-cards { grid-template-columns: 1fr; }
  .crawl-strip { grid-template-columns: repeat(2, 1fr); }
  .topbar-tag { display: none; }
}
