:root{--ink:#14221a;--ink-soft:#3d4f44;--paper:#f3efe4;--paper-2:#e8e2d2;--panel:#faf7f0;--line:#cfc6b4;--accent:#0f6b5c;--accent-2:#c45c26;--warn:#8a6d1f;--warn-bg:#fff3cd;--ok:#1f6b3a;--shadow:0 18px 50px #14221a14;--font-display:"Fraunces", "Noto Serif SC", Georgia, serif;--font-body:"IBM Plex Sans", "Noto Sans SC", system-ui, sans-serif;color:var(--ink);background:var(--paper);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-weight:400;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(1200px 600px at 10% -10%, #0f6b5c1f, transparent 55%), radial-gradient(900px 500px at 100% 0%, #c45c261a, transparent 50%), linear-gradient(180deg, #efe9da 0%, var(--paper) 40%, #ebe5d6 100%);min-width:320px}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit;color:inherit}.app-shell{max-width:1180px;margin:0 auto;padding:28px 20px 64px}.topbar{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:28px;display:flex}.brand{gap:6px;display:grid}.brand-mark{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:clamp(2rem,4vw,2.75rem);line-height:1.05}.brand-sub{color:var(--ink-soft);max-width:36rem;margin:0}.nav{flex-wrap:wrap;gap:8px;display:flex}.nav a{border:1px solid var(--line);background:#faf7f0b3;border-radius:999px;padding:10px 14px;transition:background .2s,border-color .2s,transform .2s}.nav a:hover{border-color:var(--accent);transform:translateY(-1px)}.nav a.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.panel{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px}.grid-work{grid-template-columns:1.35fr .9fr;gap:16px;display:grid}@media (width<=960px){.grid-work{grid-template-columns:1fr}}.chat-pane,.side-pane{flex-direction:column;gap:14px;min-height:540px;padding:18px;display:flex}.messages{flex-direction:column;flex:1;gap:12px;max-height:52vh;padding-right:4px;display:flex;overflow:auto}.bubble{white-space:pre-wrap;word-break:break-word;border:1px solid var(--line);border-radius:14px;max-width:92%;padding:12px 14px;animation:.35s both rise}.bubble.user{color:#f4f0e6;background:#12352e;border-color:#12352e;align-self:flex-end}.bubble.assistant{background:#fff;align-self:flex-start}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.composer{gap:10px;display:grid}.composer textarea{resize:vertical;border:1px solid var(--line);background:#fff;border-radius:12px;width:100%;min-height:96px;padding:12px 14px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--ink);background:var(--ink);color:var(--paper);cursor:pointer;border-radius:999px;padding:10px 16px;transition:transform .15s,opacity .15s}.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.ghost{color:var(--ink);background:0 0}.btn.warn{background:var(--accent-2);border-color:var(--accent-2)}.btn.ok{background:var(--ok);border-color:var(--ok)}.field{gap:6px;display:grid}.field label{color:var(--ink-soft);font-size:.85rem}.field input,.field select,.field textarea{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px}.muted{color:var(--ink-soft);font-size:.92rem}.chip{background:var(--paper-2);border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:.85rem;display:inline-flex}.chip.bad{border-color:var(--accent-2);background:#c45c261f}.chip-x{cursor:pointer;opacity:.7;background:0 0;border:none;padding:0 2px;font-size:1rem;line-height:1}.dropzone{border:1.5px dashed var(--line);background:#ffffff8c;border-radius:14px;flex-wrap:wrap;align-items:center;gap:8px;padding:16px;transition:border-color .2s,background .2s;display:flex}.dropzone.active{border-color:var(--accent);background:#0f6b5c14}.preview-pre{border:1px solid var(--line);white-space:pre-wrap;word-break:break-word;background:#fff;border-radius:10px;max-height:180px;margin:8px 0 0;padding:10px 12px;font-size:.78rem;line-height:1.4;overflow:auto}.table-wrap{border:1px solid var(--line);background:#fff;border-radius:12px;max-height:320px;overflow:auto}.table-wrap-compact{max-height:220px}.table-wrap-modal{max-width:100%;max-height:min(60vh,560px)}table.data{border-collapse:collapse;width:max-content;min-width:100%;font-size:.86rem}table.data th,table.data td{border:1px solid var(--line);text-align:left;vertical-align:middle;white-space:normal;word-break:break-word;overflow-wrap:anywhere;min-width:5.5em;max-width:18em;padding:10px 12px;line-height:1.45}table.data th{color:#fff;z-index:1;text-align:center;white-space:nowrap;background:#1f4e79;position:sticky;top:0}table.data tr.uncertain td{background:var(--warn-bg)}.history-list{gap:10px;display:grid}.history-item{border:1px solid var(--line);background:var(--panel);border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.settings-grid{gap:14px;padding:20px;display:grid}.banner{background:#0f6b5c1a;border:1px solid #0f6b5c40;border-radius:10px;padding:10px 12px;font-size:.9rem}.banner.warn{background:#c45c261a;border-color:#c45c264d}.chip-link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:.8rem;text-decoration:underline}.preview-pre-modal{max-height:min(40vh,360px)}.modal-backdrop{z-index:1000;background:#14221a73;justify-content:center;align-items:center;padding:20px;animation:.2s both rise;display:flex;position:fixed;inset:0}.modal-panel{background:var(--panel);border:1px solid var(--line);width:min(1100px,96vw);max-height:90vh;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;display:flex;overflow:hidden}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.modal-body{gap:12px;padding:16px 18px 20px;display:grid;overflow:auto}.model-pick{flex-wrap:wrap;gap:8px;display:flex}.model-chip{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:999px;padding:8px 14px;font-size:.9rem}.model-chip:hover{border-color:var(--accent)}.model-chip.selected{background:var(--ink);color:var(--paper);border-color:var(--ink)}.section-title{font-family:var(--font-display);margin:0;font-size:1.2rem}
