/* Shared Threshward layer: theme, contrast, print, prompt collapse, legal footer.
   Linked from every page. Page CSS stays in charge of layout; this file only
   adds the cross-cutting rules the audit required. */

.tw-theme-btn,
.tw-prompt-toggle {
  font-family: "Fragment Mono", ui-monospace, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  min-height: 44px;
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid var(--board-line, var(--border, #2A3548));
  background: var(--board-2, var(--bg-card, #151B24));
  color: var(--on-board, var(--text, #E6E9EF));
  cursor: pointer;
}
.tw-theme-btn {
  position: fixed;
  top: 10px;
  right: 10px;
  z-index: 40;
}

/* Dark theme contrast floor (R-14): lifts faint/meta tokens to >= 4.5:1 WCAG AA */
html:not([data-theme="light"]) {
  --on-faint: #94A1B5;
  --on-board-faint: #94A1B5;
  --ink-faint: #596373;
}

/* Light theme. Signal stays a fill on the board (index.css). On other pages
   the tokens below are text-safe on paper (WCAG 2.x >= 4.5:1). */
html[data-theme="light"] {
  color-scheme: light;
  --bg: #F7F3E8;
  --bg-card: #FFFFFF;
  --border: #C2B9A3;
  --text: #141A23;
  --text-soft: #3E4A5C;
  --board: #F5F1E6;
  --board-2: #EDE8D8;
  --board-3: #FFFFFF;
  --board-line: #C2B9A3;
  --board-line-2: #A89878;
  --on-board: #141A23;
  --on-board-soft: #3E4A5C;
  --on-board-faint: #4E5968;
  --on-soft: #3E4A5C;
  --on-faint: #4E5968;
  --ink: #141A23;
  --ink-soft: #3E4A5C;
  --ink-faint: #4E5968;
  --sheet: #FFFFFF;
  --sheet-2: #FBF8EF;
  --line: #C2B9A3;
  --paper: #FFFCF5;
  --paper-2: #FFFFFF;
  --paper-line: #C2B9A3;
  --accent: #7A4E00;
  --signal: #7A4E00;
  --signal-ink: #FFF8E8;
  --signal-text: #7A4E00;
  --ai: #0B4F7A;
  --ai-text: #0B4F7A;
  --sev-high: #9E1B12;
  --sev-high-text: #9E1B12;
  --sev-low: #0C6840;
  --sev-low-text: #0C6840;
  --focus: #0B4F7A;
}
html[data-theme="light"] body {
  background: var(--bg, var(--board));
  color: var(--text, var(--on-board));
}
html[data-theme="light"] .btn-primary,
html[data-theme="light"] .tab[aria-pressed="true"],
html[data-theme="light"] .chip.tier-2 {
  color: #FFF8E8;
}

.tw-site-footer,
.tw-legal {
  margin: 28px 0 12px;
  padding-top: 16px;
  border-top: 1px solid var(--board-line, var(--border, #2A3548));
  font-family: "Fragment Mono", ui-monospace, monospace;
  font-size: 0.72rem;
  line-height: 1.6;
  color: var(--on-board-soft, var(--text-soft, #8B96A8));
}
.tw-site-footer a,
.tw-legal a { color: inherit; margin-right: 12px; }
.tw-verified,
.tw-read-time {
  font-family: "Fragment Mono", ui-monospace, monospace;
  font-size: 0.68rem;
  color: var(--on-board-soft, var(--text-soft, #8B96A8));
}

.tw-toc {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
  align-items: center;
  padding: 8px 0;
  background: color-mix(in srgb, var(--board, var(--bg, #0E1218)) 92%, transparent);
  font-family: "Fragment Mono", ui-monospace, monospace;
  font-size: 0.68rem;
}
.tw-toc a { color: inherit; text-decoration: none; border-bottom: 1px solid transparent; }
.tw-toc a:hover { border-bottom-color: currentColor; }

.tw-case-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 16px;
  margin: 28px 0 8px;
  padding-top: 16px;
  border-top: 1px solid var(--board-line, var(--border, #2A3548));
  font-family: "Fragment Mono", ui-monospace, monospace;
  font-size: 0.75rem;
}
.tw-case-nav a { color: inherit; }
.tw-same-audience { flex-basis: 100%; display: flex; flex-wrap: wrap; gap: 8px 14px; }

.tw-engine-note,
.tw-paid-disclosure,
.tw-cancel-note {
  margin: 8px 0 0;
  font-family: "Fragment Mono", ui-monospace, monospace;
  font-size: 0.68rem;
  line-height: 1.55;
  color: var(--on-board-soft, var(--text-soft, #8B96A8));
}
.tw-paid-preview { margin: 12px 0; }
.tw-paid-preview-frame { position: relative; }
.tw-watermark {
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 1;
  font-family: "Fragment Mono", ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  border: 1px solid currentColor;
  padding: 2px 6px;
}
.tw-paid-preview-sample {
  filter: blur(3px);
  user-select: none;
  pointer-events: none;
  padding: 16px;
  border: 1px dashed var(--board-line, var(--border, #2A3548));
  min-height: 48px;
}

@media (max-width: 640px) {
  pre.tw-prompt-long:not(.tw-prompt-open) {
    max-height: calc(12 * 1.55em);
    overflow: hidden;
  }
}
.tw-prompt-toggle { margin: 8px 0 12px; }

@media print {
  .tw-theme-btn, .tw-prompt-toggle, .theme-btn, #dev-tools, .tw-watermark { display: none !important; }
  pre.tw-prompt-long { max-height: none !important; overflow: visible !important; }
  .tw-paid-preview-sample { filter: none; }
  body { background: #fff !important; color: #000 !important; }
  a { text-decoration: underline; }
  .tw-toc { position: static; }
}

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

.tw-missing { max-width: 40rem; margin: 12vh auto; padding: 0 20px; font-family: Inter, system-ui, sans-serif; }
.tw-missing .tw-kicker { font-family: "Fragment Mono", ui-monospace, monospace; letter-spacing: 0.12em; }
.tw-policy { max-width: 42rem; margin: 0 auto; padding: 32px 20px 64px; font-family: Inter, system-ui, sans-serif; line-height: 1.55; }
.tw-policy h1 { font-family: "Instrument Serif", Georgia, serif; font-weight: 400; }
.tw-policy h2 { font-size: 1.05rem; margin-top: 1.6rem; }
