.chat-page{max-width:1080px;margin:0 auto;padding:clamp(24px,4vw,48px) clamp(20px,5vw,96px) 16px;display:flex;flex-direction:column;height:calc(100dvh - var(--nav-h, 72px) - var(--banner-h, 0px));min-height:0}.chat-area{flex:1;display:flex;flex-direction:column;min-height:0}.chat-header{flex-shrink:0;margin-bottom:clamp(20px,3vw,32px)}.chat-header h2{font-size:clamp(28px,3vw,40px);letter-spacing:-.02em;margin:0 0 16px;color:var(--pearl);font-weight:600}.chat-header .intro{font-size:clamp(16px,1.2vw,18px);line-height:1.65;color:var(--mist);margin:0;max-width:65ch}.messages{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:28px;padding:24px 24px 16px;background:#ffffff05;border:1px solid var(--rule);border-radius:12px;scroll-behavior:auto}.msg{display:flex;flex-direction:column}.msg.user .bubble{align-self:flex-end;background:var(--indigo);color:var(--pearl);border:none;max-width:75%;border-radius:18px}.msg.assistant .bubble{align-self:stretch;background:transparent;color:var(--pearl);border:none;max-width:100%;padding:0}.msg.system .bubble{align-self:center;background:#ffb44a0f;border:1px solid rgba(255,180,74,.2);color:var(--mist);font-family:var(--font-serif);font-style:italic;font-size:15px;max-width:90%;text-align:center}.msg.system .bubble a{color:var(--pearl);text-decoration:underline;text-decoration-color:var(--smoke);text-underline-offset:3px}.msg.system .bubble a:hover{text-decoration-color:var(--amber)}.bubble{padding:12px 18px;font-size:16px;line-height:1.6;word-wrap:break-word;font-family:var(--font-sans)}.bubble p{margin:0 0 .85em}.bubble p:last-child{margin-bottom:0}.bubble ul,.bubble ol{margin:.5em 0 .85em 1.5rem;padding:0}.bubble li{margin-bottom:.4em}.bubble strong{color:var(--pearl);font-weight:600}.bubble em{font-style:italic;color:var(--mist)}.bubble code{background:#ffffff0f;padding:.1em .4em;border-radius:4px;font-family:var(--font-mono);font-size:.875em;color:var(--pearl)}.bubble pre{background:#ffffff0a;border:1px solid var(--rule);padding:12px 16px;border-radius:8px;overflow-x:auto;margin:8px 0}.bubble pre code{background:none;padding:0}.typing-dot{display:inline-block;width:6px;height:6px;background:var(--mist);border-radius:50%;animation:pulse 1.2s infinite ease-in-out}@keyframes pulse{0%,80%,to{opacity:.3}40%{opacity:.9}}.composer{flex-shrink:0;background:var(--void);padding:12px 0 8px;border-top:1px solid var(--rule)}.pills{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.pill{background:transparent;border:1px solid var(--rule);color:var(--mist);padding:8px 14px;border-radius:999px;font-family:var(--font-sans);font-size:13px;cursor:pointer;transition:border-color .2s ease,color .2s ease}.pill:hover{border-color:var(--smoke);color:var(--pearl)}.pill:disabled{opacity:.4;cursor:not-allowed}.chat-form{display:flex;gap:8px;align-items:flex-end}.chat-input{flex:1;background:var(--rule-2);border:1px solid var(--rule);border-radius:12px;padding:12px 16px;font-family:var(--font-sans);font-size:15px;line-height:1.5;resize:none;max-height:200px;color:var(--pearl);transition:border-color .2s ease}.chat-input::placeholder{color:var(--smoke)}.chat-input:focus{outline:none;border-color:var(--mist)}.chat-input:disabled{opacity:.5;cursor:not-allowed}.send-btn{background:var(--pearl);color:var(--void);border:none;border-radius:999px;padding:12px 22px;font-family:var(--font-sans);font-size:14px;font-weight:500;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.send-btn:hover{transform:translateY(-1px);box-shadow:0 8px 24px #ffffff14}.send-btn:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}.offline-state{text-align:left;padding:32px 0;color:var(--mist)}.offline-state h3{font-size:clamp(20px,2vw,24px);color:var(--pearl);margin:0 0 16px;font-weight:600}.offline-state p{font-size:15.5px;line-height:1.6;margin:0 0 12px}.offline-state ul{list-style:none;padding:0;margin:16px 0 0}.offline-state li{margin-bottom:8px}.offline-state a{color:var(--pearl);text-decoration:underline;text-decoration-color:var(--smoke);text-underline-offset:3px;transition:text-decoration-color .2s ease}.offline-state a:hover{text-decoration-color:var(--amber)}
