:root {
  --canvas: #f5f2ec;
  --surface: #ffffff;
  --surface-2: #ece6d9;
  --border: #ddd5c4;
  --border-strong: #b8ac93;
  --ink: #221f1a;
  --muted: #6b6355;
  --accent: #2c3b2e;
  --accent-hover: #1c2820;
  --accent-ink: #f5f2ec;
  --accent-text: #4a5d3a;
  --accent-strong: #2c3b2e;
  --accent-soft: #e3e6d7;
  --accent-border: #b7c0a4;
  --success: #3f6b3a;
  --success-ink: #ffffff;
  --success-soft: #e1ebe0;
  --success-strong: #2f5b2a;
  --warning: #97591c;
  --warning-ink: #ffffff;
  --warning-soft: #f2e6d6;
  --warning-strong: #874e15;
  --danger: #a3312a;
  --danger-ink: #ffffff;
  --danger-soft: #f3dcd9;
  --danger-strong: #8f251f;
  --chart-1: #2c3b2e;
  --chart-2: #97591c;
  --chart-3: #4a5d3a;
  --chart-4: #6b6355;
  --chart-5: #7a8f6a;
  --chart-6: #b8ac93;

  --font-display: "Fraunces", Georgia, serif;
  --font-body: "Inter", system-ui, sans-serif;
  --font-sans: "Inter", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, monospace;
  --display-weight: 600;
  --display-tracking: -0.02em;
  --eyebrow-tracking: 0.14em;
  --radius-card: 4px;
  --radius-btn: 2px;
  --radius-input: 2px;

  --x-band: #2c3b2e;
  --x-on-photo: #f5f2ec;
}

html[data-theme="dark"] {
  --canvas: #1b1d17;
  --surface: #242720;
  --surface-2: #2c3025;
  --border: #3a3d32;
  --border-strong: #565a49;
  --ink: #f2efe6;
  --muted: #a8a596;
  --accent: #cdd9b8;
  --accent-hover: #dfe8cf;
  --accent-ink: #1b1d17;
  --accent-text: #cdd9b8;
  --accent-strong: #cdd9b8;
  --accent-soft: #313a2a;
  --accent-border: #4b5a3d;
  --success: #6fae64;
  --success-ink: #10240f;
  --success-soft: #223122;
  --success-strong: #8fca82;
  --warning: #cd9151;
  --warning-ink: #241608;
  --warning-soft: #34260f;
  --warning-strong: #e0ab72;
  --danger: #d3796f;
  --danger-ink: #240d0a;
  --danger-soft: #34201c;
  --danger-strong: #e39a90;
  --chart-1: #cdd9b8;
  --chart-2: #cd9151;
  --chart-3: #9db487;
  --chart-4: #a8a596;
  --chart-5: #7a8f6a;
  --chart-6: #565a49;

  --x-band: #12140f;
  --x-on-photo: #f2efe6;
}

/*
 * app.css — THIS APP'S OWN CSS, for what no primitive and no utility covers:
 * the one screen that makes this app itself — a timer's dial, a kanban
 * board's columns, a seating plan, a game grid. Write those here, named for
 * what they are, in tokens only (var(--accent), var(--radius-card),
 * var(--font-display)). It loads last, after design.css and theme.css, and
 * wins. Ships empty.
 *
 * Not for restyling a primitive: those live in tailwind/components.css and
 * are yours to edit there. Not for colours: those live in theme.css.
 */

html, body {
  max-width: 100vw;
  overflow-x: hidden;
}

.marquee-track {
  display: flex;
  width: max-content;
  max-width: none;
  animation: marquee 28s linear infinite;
  will-change: transform;
}
.marquee-viewport {
  overflow: hidden;
  max-width: 100vw;
}
html.reduced-motion .marquee-track {
  animation: none;
}
@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

.face-shape-card {
  border: 1px solid var(--border);
  transition: transform 0.4s ease, border-color 0.4s ease;
}
.face-shape-card:hover {
  transform: translateY(-6px);
  border-color: var(--accent-border);
}

.number-badge {
  font-family: var(--font-display);
  font-size: 3.5rem;
  line-height: 1;
  color: var(--accent-soft);
  -webkit-text-stroke: 1.5px var(--accent-border);
}

