:root{--brand:#15349B;--accent:#15349B;--text:#172340;--muted:#738097;--border:#e2e7f1;--surface:#fff;--surface-soft:#f6f8fc;--bg:#fff;color-scheme:light;font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button,.file-button,.attachment{cursor:pointer;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--brand);padding:11px 15px;min-height:44px}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible,.file-button:focus-within,.attachment:focus-within{outline:3px solid #85baff;outline-offset:3px}.primary,.send{background:var(--brand);color:white;border-color:var(--brand)}[hidden]{display:none!important}.login-screen{min-height:100dvh;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:40px 24px;text-align:center;gap:12px}.login-brand,.wordmark{display:flex;align-items:center;gap:10px;font-size:23px}.brand-x{display:inline-grid;place-items:center;background:var(--brand);color:white;width:36px;height:38px;border-radius:12px 12px 12px 4px;font-size:24px}.welcome-robot{max-width:65vw;height:auto;object-fit:contain}.login-screen h1{font-size:26px;margin:8px 0}.login-screen p{color:var(--muted);line-height:1.7;margin:4px 0}.login-screen small{max-width:330px;color:var(--muted);margin-top:16px;line-height:1.6}.login-screen a{color:var(--brand);font-size:14px}.login-screen .primary{min-width:230px}.app{height:100dvh;display:flex;flex-direction:column;max-width:920px;margin:auto}.app-header{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--border);padding:calc(12px + env(safe-area-inset-top)) 16px 12px}.wordmark{margin-right:auto}.app-header button{padding:7px 12px}.messages{flex:1;min-height:0;overflow-y:auto;padding:24px 20px}.welcome{text-align:center;padding-top:8vh}.welcome img{object-fit:contain}.welcome h1{font-size:24px}.welcome p{color:var(--muted)}.message{max-width:100%;margin-bottom:25px;line-height:1.8;overflow-wrap:anywhere}.message b.role{font-size:14px;color:var(--muted)}.message.user .content{background:var(--surface-soft);border-radius:20px;padding:14px 18px;display:inline-block;white-space:pre-wrap}.message.assistant .content{padding:8px 0}.message .content p{margin:.5em 0}.message .content pre{overflow:auto;max-width:100%;padding:12px;border:1px solid var(--border);border-radius:12px}.message .content table{border-collapse:collapse;display:block;overflow:auto}.message .content td,.message .content th{padding:5px;border:1px solid var(--border)}.message details{background:var(--surface-soft);padding:10px 14px;border-radius:12px;font-size:14px}.message details p{white-space:pre-wrap}.message .actions{display:flex;gap:8px;margin-top:12px}.message .actions button{padding:6px 10px;font-size:14px}.composer{padding:0 16px calc(14px + env(safe-area-inset-bottom));background:var(--surface)}.notice{font-size:12px;color:var(--muted);line-height:1.6;margin:10px 4px}.composer form{border:1px solid var(--border);border-radius:22px;padding:14px;box-shadow:0 4px 24px #15349b08}.composer textarea{display:block;resize:none;width:100%;border:0;background:transparent;color:var(--text);line-height:1.5;padding:4px}.composer-actions{display:flex;align-items:center;gap:6px;margin-top:8px}.composer-actions button,.attachment{font-size:14px;padding:8px 10px}.composer-actions .send{margin-left:auto;border-radius:16px;font-size:25px;width:46px;padding:3px}.error{color:#bc304c!important;line-height:1.6;font-size:14px;overflow-wrap:anywhere}.data-dialog{border:1px solid var(--border);border-radius:22px;color:var(--text);width:min(620px,calc(100% - 24px));max-height:90dvh;padding:0;background:var(--surface)}dialog::backdrop{background:#17234080}.data-dialog header{padding:14px 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border)}.data-dialog h2{font-size:20px;margin:0}.data-body{padding:16px 20px 25px;line-height:1.7}.data-body p{font-size:14px;color:var(--muted)}.data-body button,.file-button{display:inline-block;margin:4px 2px}.data-body label:not(.file-button){display:block}.data-body input:not([type=checkbox]),.data-body textarea{width:100%;border:1px solid var(--border);border-radius:12px;padding:12px;background:var(--surface);color:var(--text)}.memory-item,.document-item{padding:12px 0;border-bottom:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere}.memory-item .controls{display:flex;align-items:center;gap:8px}.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0);overflow:hidden}.voice-conversation{--primary:var(--brand)}@media(max-width:360px){.wordmark{font-size:20px;gap:6px}.app-header{padding-left:10px;padding-right:10px;gap:5px}.app-header button{font-size:13px}.composer{padding-left:10px;padding-right:10px}.composer-actions{gap:3px}.composer-actions button,.attachment{font-size:12px;padding:7px}.messages{padding:20px 14px}}@media(prefers-color-scheme:dark){:root{--text:#e7ecf9;--muted:#a1adc4;--border:#303c59;--surface:#172139;--surface-soft:#202c48;--bg:#111a2d;color-scheme:dark}.primary,.send{background:#3559ca}.brand-x{background:#3559ca}.welcome-robot,.welcome img{border-radius:32px}.data-dialog{box-shadow:0 12px 60px #0008}}

/* Keep memory controls and the close action usable on narrow screens. */
.data-dialog>header,.data-dialog form>header{position:sticky;top:0;z-index:2;background:var(--surface)}.memory-item .controls{flex-wrap:wrap}.memory-item .controls label{display:flex;align-items:center;gap:8px;flex:1 1 120px;min-height:44px}.memory-item .controls button{flex:0 0 auto;white-space:nowrap}.memory-item input[type=checkbox],.document-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--brand);flex-shrink:0}#memory-state{padding:10px 12px;border-radius:12px;background:var(--surface-soft)}#data-error{padding:10px 12px;border:1px solid #bc304c55;border-radius:12px;background:var(--surface-soft)}.composer textarea:focus-visible{outline:2px solid #85baff;outline-offset:2px;border-radius:6px}

/* A single action row stays beside the send button as the draft grows. */
.composer form{padding:8px 10px;border-radius:20px}.composer textarea{min-height:32px;max-height:168px;height:32px;overflow-y:hidden;font-size:16px;padding:4px 2px}.composer-actions{flex-wrap:nowrap;gap:6px;margin-top:4px;justify-content:flex-end}.composer-actions button{flex:0 0 auto;white-space:nowrap;font-size:13px;padding:8px;min-height:44px}.composer-actions #memory-toggle{min-width:0;flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.composer-actions #memory-toggle[aria-pressed=true]{background:#15349b10;border-color:#15349b40;color:var(--brand)}.composer-actions .send,.composer-actions #stop-chat{margin-left:0;flex:0 0 44px;width:44px;height:44px;padding:3px;border-radius:14px}.composer-actions .send{font-size:25px}.composer-actions #stop-chat{font-size:12px;background:var(--brand);color:white;border-color:var(--brand)}

/* Keep Angus on the left and MiiA replies, sources and actions on the right. */
.message.user{max-width:90%;margin-right:auto}.message.assistant{width:fit-content;max-width:min(90%,720px);margin-left:auto;text-align:left}.message.assistant>.role{display:block;text-align:right}.message.assistant>.content{min-width:0;background:var(--surface-soft);border:1px solid var(--border);border-radius:18px 4px 18px 18px;padding:12px 14px}.message.assistant>details{margin-top:8px}.message.assistant>.actions{justify-content:flex-end}
.conversation-stage{position:relative;flex:1;min-height:0}.conversation-stage>.messages{height:100%;overflow-anchor:none}.latest-message{position:absolute;right:16px;bottom:10px;z-index:1;padding:8px 14px;font-size:14px;min-height:44px;box-shadow:0 3px 16px #15349b20;background:var(--surface);border-color:var(--border)}

.history-option{display:flex!important;align-items:center;gap:10px;min-height:44px}.history-option input{width:18px;height:18px;accent-color:var(--brand)}#history-state{padding:10px 12px;background:var(--surface-soft);border-radius:12px}.history-item{padding:12px 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.history-item p{margin:0;color:var(--text)}.history-item small{display:block;color:var(--muted)}.history-item button{margin-left:0}
.quick-optin{display:flex!important;align-items:center;gap:10px;min-height:44px}.quick-optin input{width:18px;height:18px;flex:0 0 18px;accent-color:var(--brand)}.quick-help{font-size:14px;line-height:1.7}#quick-state{padding:10px 12px;background:var(--surface-soft);border-radius:12px;overflow-wrap:anywhere}#quick-unlock,#quick-remove{max-width:100%;white-space:normal;min-height:44px}

/* Tables scroll inside the reply bubble while the conversation stays in place. */
.message .content .markdown-table-region{display:block;width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;margin:12px 0;border:1px solid var(--border);border-radius:12px}.markdown-table-region:focus-visible{outline:3px solid #85baff;outline-offset:2px}.message .content .markdown-table{display:table;overflow:visible;width:max-content;min-width:100%;border-collapse:collapse;font-size:14px;line-height:1.6}.message .content .markdown-table th,.message .content .markdown-table td{min-width:100px;max-width:260px;padding:10px 12px;vertical-align:top;white-space:normal;overflow-wrap:anywhere;border:1px solid var(--border)}.markdown-table th{background:var(--surface);font-weight:650}.markdown-table .table-align-left{text-align:left}.markdown-table .table-align-center{text-align:center}.markdown-table .table-align-right{text-align:right}

/* Voice stays beside the shared composer; immersion is optional. */
.inline-voice-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 2px 0}.inline-voice-tools label{display:flex;align-items:center;gap:6px;min-height:44px;font-size:13px;color:var(--muted);margin-right:auto}.inline-voice-tools input{width:18px;height:18px;accent-color:var(--brand);margin:0}.inline-voice-tools button{padding:7px 10px;font-size:13px;min-height:44px}.inline-voice-context{margin:3px 2px 0;font-size:11px}.inline-voice-feedback .notice,.inline-voice-feedback .error{margin:6px 2px}.inline-voice-feedback button{font-size:13px;padding:7px 10px}.inline-voice-feedback #inline-voice-preview{padding:8px 10px;border-left:3px solid var(--brand);background:var(--surface-soft);border-radius:8px;overflow-wrap:anywhere}.composer-actions #inline-voice-listen[aria-pressed=true]{background:var(--brand);color:white;border-color:var(--brand)}.message .actions{flex-wrap:wrap}.composer{flex-shrink:0;max-height:70dvh;overflow-y:auto}.conversation-stage{min-height:64px}@media(max-width:360px){.inline-voice-tools{gap:5px}.inline-voice-tools button{font-size:12px;padding:7px}.inline-voice-tools label{font-size:12px}.inline-voice-context{font-size:10px}}

.inline-voice-privacy{flex-shrink:0;padding:0 18px 10px;color:var(--muted);font-size:11px;line-height:1.6}.inline-voice-privacy summary{cursor:pointer;padding:5px 0}.inline-voice-privacy p{margin:4px 0;max-height:100px;overflow-y:auto}

/* Keep chat actions readable in the dark and the short-screen welcome in view. */
@media(prefers-color-scheme:dark){.app-header button,.composer button:not(.send):not(#stop-chat),.message .actions button,.latest-message{color:#b6c7ff}.composer-actions #memory-toggle[aria-pressed=true]{color:#b6c7ff;background:#15349b40}}
@media(max-height:680px){.welcome{padding-top:4px}.welcome img{width:84px;height:84px}.welcome h1{font-size:18px;margin:8px 0}.welcome p{font-size:13px;margin:6px 0}}

/* The app's explicit height also follows visualViewport on phone keyboards. */
.composer{max-height:min(70%,calc(100% - 148px - env(safe-area-inset-top)))}
.learning-body{overflow-wrap:anywhere}.learning-actions{display:flex;gap:8px;flex-wrap:wrap}.learning-actions button{max-width:100%;white-space:normal;min-height:44px}.learning-body form{margin-top:20px}.learning-body textarea,.learning-body input:not([type=checkbox]){box-sizing:border-box;width:100%;max-width:100%;min-width:0;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px}.learning-body label{display:block;margin-top:12px}.learning-body .learning-check{display:flex;align-items:flex-start;gap:10px;line-height:1.7}.learning-check input{width:20px;height:20px;flex:0 0 20px;margin-top:4px;accent-color:var(--brand)}#learning-result{min-height:24px}#learning-dialog header h2{min-width:0;overflow-wrap:anywhere}#learning-cancel{flex-shrink:0}
