@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,600;1,8..60,400&display=swap"); :root { --color-bg: #fafaf9; --color-surface: #ffffff; --color-surface-hover: #f5f5f4; --color-border: #e7e5e4; --color-primary: #2c5ea8; --color-primary-hover: #1e4a85; --color-text: #1c1917; --color-text-muted: #78716c; --color-success: #15803d; --color-success-subtle: #f0f7f2; --color-danger: #c2412c; --color-danger-hover: #9a3622; --color-danger-subtle: #fee2e2; --radius-sharp: 1px; --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; --radius: var(--radius-lg); --font-sans: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; --font-serif: "Source Serif 4", Georgia, serif; --font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace; --font: var(--font-sans); --text-display: clamp(2rem, 5vw, 3rem); --text-headline: 1.25rem; --text-body: 1rem; --text-label: 0.75rem; --text-caption: 0.625rem; /* Shared box padding: question card padding and answer text inset are the same, so question and answer text share identical edges. */ --card-pad: 1.1rem 1.2rem; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-family: var(--font); background: var(--color-bg); color: var(--color-text); line-height: 1.6; } body { min-height: 100vh; display: flex; flex-direction: column; } .appRoot { flex: 1; display: flex; flex-direction: column; min-height: 100vh; } .appBody { flex: 1; display: flex; flex-direction: column; } a { color: var(--color-primary); text-decoration: none; } a:hover { text-decoration: underline; }