@import "https://fonts.googleapis.com/css2?family=Fraunces:wght@500;600&family=Inter:wght@400;500;550;600&display=swap";:root{--paper:#f6f2ec;--card:#fffdfa;--ink:#1c1a17;--ink-soft:#5f584e;--ink-faint:#9a9186;--line:#e7dfd3;--line-strong:#d8cebd;--accent:#3f5a4c;--accent-ink:#2b3f34;--accent-soft:#eef2ee;--gold:#b08a48;--danger:#a4442f;--danger-soft:#fbeeea;--success:#3f5a4c;--display:"Fraunces", ui-serif, Georgia, "Times New Roman", serif;--sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--radius:18px;--radius-sm:12px;--shadow-sm:0 1px 2px #1c1a170a, 0 2px 8px #1c1a170a;--shadow-md:0 8px 30px #1c1a1714, 0 2px 8px #1c1a170a;--shadow-lg:0 24px 60px #1c1a171f;--ease:cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box}html,body,#root{min-height:100dvh;margin:0;padding:0}body{background:radial-gradient(1200px 600px at 100% -10%, #fbf7f0 0%, #fbf7f000 55%), radial-gradient(900px 500px at -10% 110%, #f0ece3 0%, #f0ece300 50%), var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:16px;line-height:1.55}.page{min-height:100dvh;padding:max(16px, env(safe-area-inset-top)) 18px max(20px, env(safe-area-inset-bottom));flex-direction:column;max-width:720px;margin:0 auto;display:flex}.masthead{justify-content:space-between;align-items:center;padding:6px 2px 22px;display:flex}.brand{font-family:var(--display);letter-spacing:.01em;font-size:1.15rem;font-weight:600}.masthead__meta{text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);font-size:.72rem}.stage{flex-direction:column;flex:1;justify-content:center;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:26px 22px 24px}.eyebrow{text-transform:uppercase;letter-spacing:.18em;color:var(--gold);margin:0 0 10px;font-size:.72rem;font-weight:600}h1{font-family:var(--display);letter-spacing:-.01em;margin:0 0 10px;font-size:clamp(1.6rem,6vw,2.15rem);font-weight:500;line-height:1.12}.lede{color:var(--ink-soft);max-width:46ch;margin:0 0 22px;font-size:1rem}.field{margin-bottom:18px}.field:last-of-type{margin-bottom:0}.field>label{color:var(--ink);margin-bottom:8px;font-size:.92rem;font-weight:500;display:block}.field .hint{color:var(--ink-faint);margin-top:7px;font-size:.82rem;display:block}.control{width:100%;color:var(--ink);border:1.5px solid var(--line-strong);border-radius:var(--radius-sm);transition:border-color .18s var(--ease), box-shadow .18s var(--ease), background .18s;appearance:none;background:#fff;padding:14px 15px;font-family:inherit;font-size:1rem}.control::placeholder{color:var(--ink-faint)}.control:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.error-msg{color:var(--danger);margin-top:7px;font-size:.82rem}.btn{cursor:pointer;transition:transform .12s var(--ease), background .18s, box-shadow .18s, opacity .18s, color .18s;letter-spacing:.01em;border:1.5px solid #0000;border-radius:999px;padding:14px 26px;font-family:inherit;font-size:.98rem;font-weight:550}.btn:active{transform:translateY(1px)scale(.995)}.btn--primary{background:var(--accent);color:#fdfdfb;box-shadow:0 6px 18px #3f5a4c47}.btn--primary:hover{background:var(--accent-ink)}.btn--block{width:100%}.btn--primary:disabled{color:#fbfbf9;box-shadow:none;cursor:not-allowed;opacity:.85;background:#cfd6cf}.btn--ghost{color:var(--ink-soft);background:0 0;border-color:#0000}.btn--ghost:hover{color:var(--ink)}.confirm{text-align:center;padding:10px 4px 4px}.confirm p{color:var(--ink-soft);max-width:42ch;margin:0 auto 8px}.loading{color:var(--ink-faint);place-items:center;gap:14px;padding:80px 0;display:grid}.spinner{border:3px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;width:30px;height:30px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.masthead__actions{align-items:center;gap:4px;display:flex}.masthead__actions a.btn--ghost{text-decoration:none}.page--chat{max-width:760px;height:100dvh;padding-bottom:max(12px, env(safe-area-inset-bottom))}.chat-shell{flex-direction:column;flex:1;min-height:0;display:flex}.chat-messages{flex-direction:column;flex:1;gap:12px;padding:6px 2px 18px;display:flex;overflow-y:auto}.chat-empty{text-align:center;margin:auto 0;padding:20px 10px}.chat-empty h1{margin-bottom:8px}.chat-empty .lede{margin:0 auto}.bubble{border-radius:var(--radius-sm);white-space:pre-wrap;max-width:80%;padding:13px 16px;font-size:.96rem;line-height:1.55}.bubble--user{background:var(--accent);color:#fdfdfb;border-bottom-right-radius:4px;align-self:flex-end}.bubble--assistant{background:var(--card);border:1px solid var(--line);color:var(--ink);border-bottom-left-radius:4px;align-self:flex-start}.bubble--assistant>:first-child{margin-top:0}.bubble--assistant>:last-child{margin-bottom:0}.bubble--assistant h1,.bubble--assistant h2,.bubble--assistant h3{font-family:var(--display);margin:16px 0 6px;font-size:1.05rem;font-weight:600}.bubble--assistant p{margin:0 0 10px}.bubble--assistant ul,.bubble--assistant ol{margin:0 0 10px;padding-left:1.3em}.bubble--assistant li{margin-bottom:4px}.bubble--assistant strong{color:var(--accent-ink)}.bubble--assistant blockquote{border-left:3px solid var(--line-strong);color:var(--ink-soft);margin:0 0 10px;padding-left:12px}.bubble--assistant table{border-collapse:collapse;margin:0 0 10px;font-size:.9rem}.bubble--assistant th,.bubble--assistant td{border:1px solid var(--line);text-align:left;padding:6px 10px}.bubble--pending{align-items:center;gap:5px;padding:16px 18px;display:flex}.typing-dot{background:var(--ink-faint);border-radius:50%;width:6px;height:6px;animation:1.1s ease-in-out infinite typing-bounce}.typing-dot:nth-child(2){animation-delay:.15s}.typing-dot:nth-child(3){animation-delay:.3s}@keyframes typing-bounce{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.chat-error{color:var(--danger);background:var(--danger-soft);border-radius:var(--radius-sm);margin-bottom:10px;padding:10px 14px;font-size:.86rem}.chat-input-row{border-top:1px solid var(--line);gap:10px;padding-top:10px;display:flex}.chat-input-row .control{flex:1}.chat-input-row .btn{flex:none}@media (width>=640px){.page{padding-top:34px}.card{padding:40px 40px 34px}.masthead{padding-bottom:30px}.page--chat{padding-top:20px}}
