:root { font-family: 'Noto Sans', 'Segoe UI', Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } :root, :root[data-theme='light'] { color-scheme: light; --app-bg: #f4f6fb; --app-text: #1f2937; --panel-bg: rgba(255, 255, 255, 0.5); --panel-border: #d7deea; --panel-shadow: 0 8px 24px rgba(16, 24, 40, 0.12); --btn-bg: rgba(255, 255, 255, 0.5); --btn-fg: #5b6470; --btn-hover-bg: #4a90d9; --btn-hover-fg: #ffffff; --btn-disabled-bg: rgba(207, 213, 223, 0.5); --btn-disabled-fg: #8a92a0; --overlay-bg: rgba(15, 23, 42, 0.3); --tooltip-bg: #111827; --tooltip-fg: #f9fafb; --muted-text: #6b7280; --danger-text: #dc2626; --scrollbar-thumb: #d4dae4; --scrollbar-thumb-hover: #bbc4d2; --focus-ring: #3b82f6; --toggle-bg-start: rgba(255, 248, 221, 0.5); --toggle-bg-end: rgba(242, 244, 255, 0.5); --toggle-thumb-bg: #ffffff; --toggle-sun: #f59e0b; --toggle-moon: #475569; --ghost-text: #7d8796; --ghost-code-bg: rgba(15, 23, 42, 0.06); --mermaid-max-height: 420px; --mermaid-mobile-max-height: 320px; --mermaid-action-bg: linear-gradient(180deg, #ffffff 0%, #f4f7fc 100%); --mermaid-action-hover-bg: linear-gradient(180deg, #ffffff 0%, #e9f2ff 100%); --mermaid-action-fg: #1f2937; --mermaid-action-border: #cfd8e6; --mermaid-action-shadow: 0 1px 2px rgba(15, 23, 42, 0.08); --mermaid-action-shadow-hover: 0 4px 10px rgba(37, 99, 235, 0.16); --mermaid-action-disabled-bg: rgba(148, 163, 184, 0.18); --mermaid-action-disabled-fg: #9aa4b2; --crepe-color-background: #ffffff; --crepe-color-on-background: #000000; --crepe-color-surface: #f7f7f7; --crepe-color-surface-low: #ededed; --crepe-color-on-surface: #1c1c1c; --crepe-color-on-surface-variant: #4d4d4d; --crepe-color-outline: #a8a8a8; --crepe-color-primary: #333333; --crepe-color-secondary: #cfcfcf; --crepe-color-on-secondary: #000000; --crepe-color-inverse: #f0f0f0; --crepe-color-on-inverse: #1a1a1a; --crepe-color-inline-code: #ba1a1a; --crepe-color-error: #ba1a1a; --crepe-color-hover: #e0e0e0; --crepe-color-selected: #d5d5d5; --crepe-color-inline-area: #cacaca; } :root[data-theme='dark'] { color-scheme: dark; --app-bg: #0f1117; --app-text: #e5e7eb; --panel-bg: rgba(26, 30, 39, 0.5); --panel-border: #2f3644; --panel-shadow: 0 10px 26px rgba(0, 0, 0, 0.5); --btn-bg: rgba(34, 40, 52, 0.5); --btn-fg: #d2d8e4; --btn-hover-bg: #6ea8ff; --btn-hover-fg: #0d1117; --btn-disabled-bg: rgba(46, 52, 65, 0.5); --btn-disabled-fg: #7a8498; --overlay-bg: rgba(2, 6, 23, 0.65); --tooltip-bg: #f8fafc; --tooltip-fg: #0f172a; --muted-text: #aeb6c5; --danger-text: #f87171; --scrollbar-thumb: #40485a; --scrollbar-thumb-hover: #5f6980; --focus-ring: #60a5fa; --toggle-bg-start: rgba(45, 49, 64, 0.5); --toggle-bg-end: rgba(31, 36, 48, 0.5); --toggle-thumb-bg: #dbe3f2; --toggle-sun: #fbbf24; --toggle-moon: #e2e8f0; --ghost-text: #95a0b4; --ghost-code-bg: rgba(226, 232, 240, 0.12); --mermaid-action-bg: linear-gradient(180deg, #30394b 0%, #242c3a 100%); --mermaid-action-hover-bg: linear-gradient(180deg, #3a4760 0%, #2a3445 100%); --mermaid-action-fg: #e5e7eb; --mermaid-action-border: #3e4a61; --mermaid-action-shadow: 0 1px 2px rgba(2, 6, 23, 0.45); --mermaid-action-shadow-hover: 0 5px 12px rgba(2, 6, 23, 0.55); --mermaid-action-disabled-bg: rgba(82, 93, 110, 0.3); --mermaid-action-disabled-fg: #9aa4b2; --crepe-color-background: #1a1a1a; --crepe-color-on-background: #e6e6e6; --crepe-color-surface: #121212; --crepe-color-surface-low: #1c1c1c; --crepe-color-on-surface: #d1d1d1; --crepe-color-on-surface-variant: #a9a9a9; --crepe-color-outline: #757575; --crepe-color-primary: #b5b5b5; --crepe-color-secondary: #4d4d4d; --crepe-color-on-secondary: #d6d6d6; --crepe-color-inverse: #e5e5e5; --crepe-color-on-inverse: #2a2a2a; --crepe-color-inline-code: #ff6666; --crepe-color-error: #ff6666; --crepe-color-hover: #232323; --crepe-color-selected: #2f2f2f; --crepe-color-inline-area: #2b2b2b; } :root[data-theme='light'] .milkdown { --crepe-color-background: transparent; --crepe-color-on-background: #000000; --crepe-color-surface: rgba(247, 247, 247, 0.5); --crepe-color-surface-low: rgba(237, 237, 237, 0.5); --crepe-color-on-surface: #1c1c1c; --crepe-color-on-surface-variant: #4d4d4d; --crepe-color-outline: #a8a8a8; --crepe-color-primary: #333333; --crepe-color-secondary: #cfcfcf; --crepe-color-on-secondary: #000000; --crepe-color-inverse: #f0f0f0; --crepe-color-on-inverse: #1a1a1a; --crepe-color-inline-code: #ba1a1a; --crepe-color-error: #ba1a1a; --crepe-color-hover: #e0e0e0; --crepe-color-selected: #d5d5d5; --crepe-color-inline-area: #cacaca; } :root[data-theme='dark'] .milkdown { --crepe-color-background: transparent; --crepe-color-on-background: #e6e6e6; --crepe-color-surface: rgba(18, 18, 18, 0.5); --crepe-color-surface-low: rgba(28, 28, 28, 0.5); --crepe-color-on-surface: #d1d1d1; --crepe-color-on-surface-variant: #a9a9a9; --crepe-color-outline: #757575; --crepe-color-primary: #b5b5b5; --crepe-color-secondary: #4d4d4d; --crepe-color-on-secondary: #d6d6d6; --crepe-color-inverse: #e5e5e5; --crepe-color-on-inverse: #2a2a2a; --crepe-color-inline-code: #ff6666; --crepe-color-error: #ff6666; --crepe-color-hover: #232323; --crepe-color-selected: #2f2f2f; --crepe-color-inline-area: #2b2b2b; } html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow-x: hidden; overflow-y: auto; background: var(--app-bg); color: var(--app-text); } body { min-width: 320px; } #app { width: 100vw; height: 100vh; margin: 0; padding: 0; max-width: none; background: var(--app-bg); color: var(--app-text); } *, *::before, *::after { box-sizing: border-box; transition: background-color 220ms ease, color 220ms ease, border-color 220ms ease, box-shadow 220ms ease; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; } } /* ── Mermaid diagram blocks ─────────────────────────────────────────── */ .mermaid-block { display: block; width: fit-content; max-width: 100%; margin: 1em auto; padding: 12px; background: var(--crepe-color-surface, #f7f7f7); border: 1px solid var(--panel-border, #d7deea); border-radius: 10px; transition: border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease; } .mermaid-block:hover { border-color: var(--focus-ring, #3b82f6); } .mermaid-controls { display: flex; justify-content: flex-end; gap: 8px; margin-bottom: 10px; flex-wrap: wrap; } .mermaid-action-btn { appearance: none; border: 1px solid var(--mermaid-action-border); border-radius: 999px; padding: 6px 12px; font-size: 12px; font-weight: 600; letter-spacing: 0.01em; line-height: 1.2; background: var(--mermaid-action-bg); color: var(--mermaid-action-fg); cursor: pointer; box-shadow: var(--mermaid-action-shadow); transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease, background 160ms ease; } .mermaid-action-btn:hover:not([disabled]) { border-color: var(--focus-ring); background: var(--mermaid-action-hover-bg); box-shadow: var(--mermaid-action-shadow-hover); transform: translateY(-1px); } .mermaid-action-btn:active:not([disabled]) { transform: translateY(0); } .mermaid-action-btn[disabled] { background: var(--mermaid-action-disabled-bg); color: var(--mermaid-action-disabled-fg); cursor: not-allowed; } .mermaid-inner { display: block; max-width: 100%; max-height: var(--mermaid-max-height); overflow: auto; border-radius: 8px; padding: 8px; background: rgba(255, 255, 255, 0.88); } .mermaid-inner::-webkit-scrollbar { width: 8px; height: 8px; } .mermaid-inner::-webkit-scrollbar-thumb { background-color: var(--scrollbar-thumb); border-radius: 4px; } .mermaid-image { display: block; width: auto; height: auto; max-width: none; margin: 0 auto; } .mermaid-inner svg { display: block; } .mermaid-loading { padding: 24px; text-align: center; font-size: 1.4em; color: var(--muted-text, #6b7280); letter-spacing: 0.2em; animation: mermaid-pulse 1.2s ease-in-out infinite; } @keyframes mermaid-pulse { 0%, 100% { opacity: 0.4; } 50% { opacity: 1; } } .mermaid-error { padding: 12px 16px; margin: 0; background: rgba(220, 38, 38, 0.08); border: 1px solid var(--danger-text, #dc2626); border-radius: 6px; color: var(--danger-text, #dc2626); font-size: 12px; font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', monospace; white-space: pre-wrap; word-break: break-word; } :root[data-theme='dark'] .milkdown .katex { color: var(--crepe-color-on-background); } :root[data-theme='dark'] .milkdown .cm-editor, :root[data-theme='dark'] .milkdown .cm-scroller { background-color: rgba(237, 237, 237, 0.86); color: var(--crepe-color-on-surface); } :root[data-theme='dark'] .milkdown .cm-gutters { background-color: rgba(237, 237, 237, 0.86); color: var(--crepe-color-on-surface-variant); border-right-color: var(--panel-border); } @media (max-width: 768px) { .mermaid-inner { max-height: var(--mermaid-mobile-max-height); } }