/* Shared base type + base resets, palette-agnostic. Loads after a palette-X.css file. */
@import url("https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Geist:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap");

:root {
  --font-display: "Instrument Serif", Georgia, serif;
  --font-body:    "Geist", system-ui, sans-serif;
  --font-mono:    "JetBrains Mono", ui-monospace, monospace;
}

html { font-family: var(--font-body); font-size: 16px; line-height: 1.6; color: var(--ink); background: var(--paper); -webkit-font-smoothing: antialiased; }
body { margin: 0; }
::selection { background: var(--accent); color: var(--paper); }

/* Marquee + hover effects, palette-agnostic */
.marquee-track { animation: marquee 60s linear infinite; }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.marquee-track:hover { animation-play-state: paused; }
.marquee-tile { filter: saturate(0.4) contrast(0.95); transition: filter 240ms cubic-bezier(0.2,0,0,1); }
.marquee-tile:hover { filter: saturate(1) contrast(1); }
.marquee-tile .meta { opacity: 0; transition: opacity 240ms cubic-bezier(0.2,0,0,1); }
.marquee-tile:hover .meta { opacity: 1; }

.talk-row { position: relative; transition: background-color 120ms cubic-bezier(0.2,0,0,1); }
.talk-row::before { content: ''; position: absolute; left: -8px; top: 12px; bottom: 12px; width: 2px; background: var(--accent); opacity: 0; transition: opacity 120ms cubic-bezier(0.2,0,0,1); }
.talk-row:hover::before { opacity: 1; }

.link-inline { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; text-decoration-color: var(--rule); transition: color 120ms, text-decoration-color 120ms; }
.link-inline:hover { color: var(--accent); text-decoration-color: var(--accent); }
