@font-face { font-family: 'Inter'; font-weight: 400; font-style: normal; font-display: swap; src: url('/fonts/Inter_400Regular.ttf') format('truetype'); } @font-face { font-family: 'Inter'; font-weight: 400; font-style: italic; font-display: swap; src: url('/fonts/Inter_400Regular_Italic.ttf') format('truetype'); } @font-face { font-family: 'Inter'; font-weight: 600; font-style: normal; font-display: swap; src: url('/fonts/Inter_600SemiBold.ttf') format('truetype'); } @font-face { font-family: 'Inter'; font-weight: 700; font-style: normal; font-display: swap; src: url('/fonts/Inter_700Bold.ttf') format('truetype'); } @font-face { font-family: 'Inter'; font-weight: 700; font-style: italic; font-display: swap; src: url('/fonts/Inter_700Bold_Italic.ttf') format('truetype'); } @font-face { font-family: 'JetBrains Mono'; font-weight: 400; font-style: normal; font-display: swap; src: url('/fonts/JetBrainsMono_400Regular.ttf') format('truetype'); } /* Obsidian-like palette. */ :root { --bg: #ffffff; --bg-2: #f6f6f6; --bg-3: #ececec; --bg-canvas: #efefef; --border: #e3e3e3; --hover: #e9e9e9; --text: #222222; --muted: #6b6b6b; --faint: #a6a6a6; --accent: #705dcf; --accent-soft: rgba(112, 93, 207, 0.14); --accent-text: #ffffff; --danger: #e03e3e; --success: #2f9e5c; --warn: #d9901b; --shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 4px 16px rgba(0, 0, 0, 0.08); --page-line: rgba(0, 0, 0, 0.18); --grid-line: rgba(0, 0, 0, 0.05); --ghost: rgba(0, 0, 0, 0.045); --ghost-border: rgba(0, 0, 0, 0.12); --radius: 6px; --ui-font: 'Inter', -apple-system, 'Segoe UI', system-ui, sans-serif; --mono-font: 'JetBrains Mono', ui-monospace, monospace; color-scheme: light; } :root[data-theme='dark'] { --bg: #1e1e1e; --bg-2: #262626; --bg-3: #303030; --bg-canvas: #161616; --border: #363636; --hover: #333333; --text: #dadada; --muted: #a3a3a3; --faint: #666666; --accent: #8a7cf0; --accent-soft: rgba(138, 124, 240, 0.18); --accent-text: #ffffff; --danger: #fb464c; --success: #44cf6e; --warn: #e9973f; --shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 20px rgba(0, 0, 0, 0.35); --page-line: rgba(255, 255, 255, 0.16); --grid-line: rgba(255, 255, 255, 0.04); --ghost: rgba(255, 255, 255, 0.04); --ghost-border: rgba(255, 255, 255, 0.14); color-scheme: dark; } * { box-sizing: border-box; } html, body { height: 100%; margin: 0; overflow: hidden; overscroll-behavior: none; } body { background: var(--bg); color: var(--text); font: 13px/1.4 var(--ui-font); -webkit-font-smoothing: antialiased; } button { font: inherit; color: inherit; } input, select { font: inherit; color: var(--text); background: var(--bg); border: 1px solid var(--border); border-radius: 4px; padding: 5px 8px; outline: none; } input:focus, select:focus { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); } /* Small square icon button, the Obsidian ribbon/toolbar look. */ .icon-btn { display: inline-grid; place-items: center; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 4px; background: transparent; color: var(--muted); cursor: pointer; flex: none; } .icon-btn:hover { background: var(--hover); color: var(--text); } .icon-btn.active { color: var(--accent); background: var(--accent-soft); } .icon-btn:disabled { opacity: 0.35; cursor: default; background: transparent; } .btn { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--border); background: var(--bg-2); border-radius: 4px; padding: 6px 12px; cursor: pointer; } .btn:hover { background: var(--hover); } .btn.primary { background: var(--accent); border-color: var(--accent); color: var(--accent-text); } .btn.primary:hover { filter: brightness(1.08); } ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-thumb { background: var(--bg-3); border-radius: 10px; border: 3px solid transparent; background-clip: padding-box; } ::-webkit-scrollbar-track { background: transparent; }