:root{--ink: #0e0f10;--charcoal: #16181b;--graphite: #202328;--slate: #2b3036;--parchment: #d6ccb8;--parchment-light: #e9e2d4;--parchment-dim: #a99b84;--brass: #a6844a;--brass-dim: #765f38;--text-light: #e9e6de;--muted-light: #9a9690;--muted-ink: #67635d;--ok: #5a8264;--warn: #b08a52;--ok-ink: #4a6b53;--warn-ink: #795e37;--serif: "Source Serif 4", Georgia, serif;--sans: "IBM Plex Sans", system-ui, sans-serif;--mono: "Courier Prime", "Courier New", monospace}:root,:root[data-theme=graphite]{--bg: var(--charcoal);--paper: var(--ink);--fg: var(--text-light);--muted: var(--muted-light);--rule: var(--slate);--accent: var(--brass);--card: var(--graphite);--state-ok: var(--ok);--state-warn: var(--warn);color-scheme:dark}:root[data-theme=parchment]{--bg: var(--parchment);--paper: var(--parchment-light);--fg: var(--ink);--muted: var(--muted-ink);--rule: var(--parchment-dim);--accent: var(--brass-dim);--card: var(--parchment-light);--state-ok: var(--ok-ink);--state-warn: var(--warn-ink);color-scheme:light}*{box-sizing:border-box}html,body{height:100%;margin:0;overscroll-behavior:none}body{background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;height:100dvh;display:flex;flex-direction:column}#app{flex:1;min-height:0;display:flex;flex-direction:column}.bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 14px;border-bottom:1px solid var(--rule);flex:none;min-height:38px}.bar.foot{border-bottom:0;border-top:1px solid var(--rule)}.wordmark{font-family:var(--serif);font-size:17px;letter-spacing:.01em}.chapter-title{font-family:var(--serif);font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta{font-family:var(--mono);font-size:10px;color:var(--muted);white-space:nowrap}.sync{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;color:var(--muted);background:none;border:0;padding:0;cursor:pointer}.dot{width:6px;height:6px;border-radius:50%;background:var(--state-ok);flex:none}.dot.queued{background:var(--state-warn)}.dot.offline{background:var(--muted)}.bar-actions{display:flex;align-items:center;gap:10px}button.ghost{font:inherit;font-size:12px;color:var(--muted);background:none;border:1px solid var(--rule);border-radius:3px;padding:3px 9px;cursor:pointer}button.ghost:hover,button.ghost:focus-visible{color:var(--fg);border-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.pad{padding:12px 14px;display:flex;flex-direction:column;gap:8px}.label{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.card{background:var(--card);border:1px solid var(--rule);border-radius:4px;padding:10px 12px;display:flex;flex-direction:column;gap:3px;cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}.card:hover,.card:focus-visible{border-color:var(--accent)}.card .name{font-family:var(--serif);font-size:16px;line-height:1.2}.empty{color:var(--muted);font-size:13px;padding:18px 2px;line-height:1.55}.editor{position:relative;flex:1;min-height:0;background:var(--paper);overflow:hidden}.editor .layer,.editor textarea{position:absolute;inset:0;margin:0;padding:12px 16px 40px;border:0;font-family:var(--mono);font-size:15px;line-height:1.62;letter-spacing:normal;white-space:pre-wrap;overflow-wrap:break-word;word-break:normal;tab-size:4;overflow-y:auto}.editor .layer{color:var(--fg);pointer-events:none;z-index:0}.editor textarea{background:transparent;color:transparent;caret-color:var(--accent);resize:none;outline:none;z-index:1}.editor textarea::selection{background:color-mix(in srgb,var(--accent) 35%,transparent)}.fmt-bold{font-weight:700}.fmt-italic{font-style:italic}.fmt-underline{text-decoration:underline}.fmt-sub,.fmt-sup{color:var(--fg)}.delim{color:var(--muted);opacity:.55}.centre{flex:1;display:flex;flex-direction:column;justify-content:center;gap:12px;padding:20px 18px;max-width:34rem;margin:0 auto;width:100%}.centre h1{font-family:var(--serif);font-weight:400;font-size:30px;margin:0}.centre p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}input[type=password],input[type=text]{font:inherit;font-family:var(--mono);background:var(--card);color:var(--fg);border:1px solid var(--rule);border-radius:4px;padding:9px 11px;width:100%}button.primary{font:inherit;font-weight:600;background:var(--accent);color:var(--bg);border:0;border-radius:4px;padding:10px 14px;cursor:pointer}.error{color:var(--state-warn);font-size:12.5px;min-height:1.2em}@media (max-height: 520px){.bar{min-height:32px;padding:5px 12px}.centre h1{font-size:24px}.editor .layer,.editor textarea{padding:8px 14px 32px}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.thread{flex:1;min-height:0;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px;background:var(--paper)}.turn{white-space:pre-wrap;overflow-wrap:break-word;font-size:14.5px;line-height:1.55;border-radius:5px;padding:9px 11px;max-width:52ch}.turn.user{align-self:flex-end;background:var(--card);border:1px solid var(--rule)}.turn.assistant{align-self:stretch;max-width:none;padding-left:0;padding-right:0}.compacted{font-family:var(--mono);font-size:10px;color:var(--muted);text-align:center;padding:4px 0 8px;border-bottom:1px solid var(--rule)}.composer-row{display:flex;align-items:flex-end;gap:8px;padding:8px 12px;border-top:1px solid var(--rule);background:var(--bg);flex:none}textarea.composer{flex:1;font:inherit;font-size:14.5px;font-family:var(--sans);background:var(--card);color:var(--fg);border:1px solid var(--rule);border-radius:5px;padding:8px 10px;resize:none;max-height:120px;overflow-y:auto}textarea.composer:focus{outline:none;border-color:var(--accent)}button.send{padding:8px 14px;flex:none}button.send:disabled{opacity:.5}.chapter-marker{display:block;width:100%;padding:4px 14px 8px;border:none;background:none;text-align:left;font:inherit;font-size:.72rem;color:var(--muted);cursor:pointer}.chapter-marker:hover{color:var(--accent, var(--muted))}.system-note{padding:6px 2px;font-size:.78rem;font-style:italic;color:var(--muted)}
