/* Sent uploads: bounded inline previews; full raster only on deliberate open. */
.sent-image-list{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.sent-image-link{display:flex;flex-direction:column;align-items:flex-start;max-width:220px;min-width:130px;overflow-wrap:anywhere;text-align:left}
.sent-image-link img{display:block;width:96px;height:96px;object-fit:contain;border-radius:5px}
.sent-image-link small,.sent-image-unavailable{display:block;font-size:12px;font-weight:normal;color:var(--muted)}
.sent-image-unavailable{margin-top:8px}
/* Notification choices share existing settings layout and minimum touch size. */
.session-notifications{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.session-notification-label{display:flex;gap:12px;align-items:center;min-height:48px;cursor:pointer}
.session-notification-label input{width:24px;height:24px;min-height:24px;flex:none;accent-color:var(--green)}
/* Session fast mode (/fast): one compact segmented choice with 48px targets. */
.session-fast-mode{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.session-fast-mode h4{margin:0 0 8px;font-size:15px}
.session-fast-choices{display:flex;gap:8px}
.session-fast-choices button{flex:1;min-width:0;min-height:48px}
.session-fast-choices button[aria-pressed=true]{background:var(--pale);border:2px solid var(--green);color:var(--green)}
#app-notifications .display-note{margin-top:12px}#app-notifications .display-maintenance{margin-top:14px}
/* Opt-in browser notices: one device control, reused in settings and chat options.
   Whole-pixel line boxes keep later settings rows on their existing pixel grid. */
.browser-notify{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:14px}
.browser-notify-title{font-weight:600;line-height:24px}
.browser-notify-status{font-size:14px;line-height:20px;color:var(--muted);overflow-wrap:anywhere}
.browser-notify button{max-width:100%;text-align:left}
#browser-notifications h2{line-height:25px}#browser-notifications .display-note{line-height:20px}
:root[data-text-size=large] .browser-notify-title{line-height:29px}
:root[data-text-size=large] :is(.browser-notify-status,#browser-notifications .display-note){font-size:16px;line-height:24px}
/* Session-bound local artifacts: modal owns its scroll, not the conversation. */
.artifact-link{display:inline;max-width:100%;min-height:48px;padding:7px 0;border:0;border-radius:3px;background:transparent;color:var(--green);font:inherit;text-align:left;text-decoration:underline;overflow-wrap:anywhere;white-space:pre-wrap}
.artifact-download{display:inline-block}
.artifact-viewer{width:min(1120px,calc(100vw - 40px));height:calc(100vh - 40px);height:calc(100dvh - 40px);max-width:none;max-height:none;padding:0;border:1px solid var(--line);border-radius:14px;color:var(--ink);background:var(--elevated);overflow:hidden;box-shadow:var(--shadow-3)}
.artifact-viewer[open]{display:flex;flex-direction:column}.artifact-viewer::backdrop{background:var(--scrim)}
.artifact-toolbar{display:flex;align-items:center;gap:18px;padding:16px 22px;border-bottom:1px solid var(--line);background:var(--footer);flex:none;min-width:0}.artifact-heading{flex:1;min-width:0}.artifact-heading h2{font-size:19px;overflow-wrap:anywhere;max-height:4em;overflow:auto}.artifact-heading small{color:var(--muted)}.artifact-toolbar button{flex:none}
.artifact-content{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:28px clamp(18px,4vw,56px);font-size:18px;line-height:1.65;overflow-wrap:anywhere;scrollbar-color:var(--field-line) transparent}.artifact-content:focus-visible{outline:2px solid var(--focus);outline-offset:-3px}.artifact-content.markdown h1{font-size:1.65em}.artifact-content.markdown h2{font-size:1.3em}.artifact-text{white-space:pre-wrap;overflow-wrap:anywhere;font:15px/1.65 var(--font-mono);margin:0}.artifact-image{display:block;max-width:100%;height:auto;margin:0 auto}.artifact-status{max-width:65ch;color:var(--muted)}
@media(max-width:580px){.artifact-viewer{width:100vw;height:100vh;height:100dvh;margin:0;border:0;border-radius:0}.artifact-toolbar{gap:8px;padding:12px}.artifact-heading h2{font-size:16px}.artifact-heading small{font-size:12px}.artifact-toolbar button{font-size:14px;padding:10px}.artifact-content{padding:20px 16px;font-size:17px}}
/* Read-only running counts stay in the header, never in the conversation. */
.session-heading{display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px}
.session-heading h1{flex:1 1 160px;min-width:0}
.session-work{flex:none;color:var(--muted);font-size:12px;line-height:1.4;white-space:nowrap}
/* Command receipts stay in their originating conversation and inherit its theme. */
.session-command-result,.session-management-output:not(:empty){margin:12px 0;padding:12px 16px;border:1px solid var(--line);border-radius:9px;background:var(--bubble);overflow-wrap:anywhere}
.session-command-result h3,.session-management-output h3{font-size:16px;margin:0 0 8px}.session-command-result p{margin:6px 0}.session-management-output button{margin:5px 8px 5px 0}
/* Transient session progress is informational; errors retain their own warning rail. */
.turn-progress{margin:8px 0;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bubble);color:var(--ink);font-size:14px;line-height:1.5;white-space:pre-line;overflow-wrap:anywhere}
.voice-note-controls button,.voice-note-play{min-width:48px;min-height:48px;flex-shrink:0}
.voice-note-controls{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.voice-note-controls button,.voice-note-play{font-size:14px}.voice-note-progress{font-variant-numeric:tabular-nums;white-space:nowrap}
/* Explicit contact voice chooser shares the active presentation palette. */
.contact-voice-dialog{width:min(460px,calc(100% - 28px));max-height:calc(100dvh - 28px);overflow:auto;padding:22px;border:1px solid var(--line);border-radius:var(--r-sheet);color:var(--ink);background:var(--elevated);box-shadow:var(--shadow-3)}
.contact-voice-dialog::backdrop{background:var(--scrim)}.contact-voice-content{display:flex;flex-direction:column;gap:14px;margin:20px 0;min-width:0}.contact-voice-content select{width:100%;min-width:0;min-height:48px;padding:10px;color:var(--ink);background:var(--paper);border:1px solid var(--field-line);border-radius:8px}.contact-voice-content select:focus-visible{outline:3px solid var(--focus)}.contact-voice-status{font-size:14px;overflow-wrap:anywhere;color:var(--muted)}.contact-voice-actions{display:flex;gap:12px;flex-wrap:wrap}.contact-voice-actions button{flex:1}
/* Unified voice controls: retain a single capture row, even at 390px. */
@media(min-width:581px){.chat-footer:not(.is-recording)>button{font-size:14px;padding:10px}}
.direct-send-warning{flex-basis:100%;font-size:13px;color:var(--danger)}
.chat-footer{flex-wrap:wrap}.chat-footer .mic-state{display:none}
.chat-footer.is-recording>:not(#direct-controls){display:none}
#direct-controls{width:100%;min-width:0;align-items:center}
.direct-audio{flex:none;padding:6px 14px;font-size:13px}
.session-compose.is-recording #session-preview{display:none}
.recording-controls .record-countdown,.session-compose.is-recording .record-countdown{flex:0 0 48px;width:48px;font-size:12px;align-self:center;text-align:center;white-space:nowrap}
@media(max-width:580px){.chat-footer>button,#session-preview{font-size:12px;padding:8px}.recording-controls{min-width:0}.recording-controls>button{min-width:48px;overflow-wrap:normal}.draft-body .recording-controls>button{padding:5px}.session-compose.is-recording{gap:5px}.session-compose.is-recording>button{font-size:12px;padding:6px}}
:root{color-scheme:light;--paper:#fff;--bg:#f3f5f3;--ink:#182822;--muted:#58685f;--line:#dce3de;--green:#185e45;--pale:#e1eee6;--rail:#111d17;--lime:#c7e8a1;--bubble:#f0f3f1;--own:#e2eee5;--danger:#93452f;--footer:#f6f8f6;--field:#f3f7f3;--field-line:#6f8577;--code:#e5eae6;--primary:#185e45;--primary-hover:#124c37;--on-primary:#fff;--focus:#538970;--control-line:var(--field-line);--surface-2:#eef2ef;--elevated:#fff;--fill-pressed:#dbe3dd;--danger-fill:#f8ebe6;--warning:#7a4d00;--warning-fill:#fbf1dc;--switch-off:#c9d3cc;--rail-ink:#e4ece6;--rail-ink-2:#b4c3b8;--rail-hover:#293c2e;--rail-current:#34503b;--scrim:rgb(7 19 13/.45);--shadow-1:0 1px 2px rgb(16 32 24/.08);--shadow-2:0 10px 30px rgb(16 32 24/.18),0 2px 6px rgb(16 32 24/.08);--shadow-3:0 18px 60px rgb(0 0 0/.28);--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;--inset:24px;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,Helvetica,sans-serif;--font-mono:ui-monospace,"SF Mono",Menlo,Consolas,"Roboto Mono",monospace;--t-title1:22px;--t-title2:20px;--t-headline:17px;--t-body:16px;--t-subhead:15px;--t-footnote:13px;--t-caption:12px;--segment-on:#fff;--grouped:var(--surface-2);--group-bg:var(--paper);--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2358685f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--r-control:10px;--r-segment:8px;--r-card:16px;--r-sheet:16px;--r-menu:12px;--r-bubble:14px;--r-pill:999px}
/* Auto follows the browser live; explicit light overrides OS dark. */
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#19221d;--bg:#121915;--ink:#e6eee8;--muted:#afc1b5;--line:#42574a;--green:#9bd9b1;--pale:#293f32;--rail:#0c120f;--lime:#c7e8a1;--bubble:#29322d;--own:#244633;--danger:#ffb39e;--footer:#19221d;--surface-2:#26322c;--elevated:#212b26;--fill-pressed:#34433b;--danger-fill:#3d2a24;--warning:#f2c46b;--warning-fill:#3a3222;--switch-off:#3a4a41;--scrim:rgb(0 0 0/.6);--shadow-1:none;--shadow-2:0 10px 30px rgb(0 0 0/.5);--shadow-3:0 18px 60px rgb(0 0 0/.6);--segment-on:#3a4a41;--grouped:#121915;--group-bg:#212b26;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23afc1b5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--field:#202e25;--field-line:#748f7e;--code:#35423a;--primary:#a6d9b5;--primary-hover:#bfeaca;--on-primary:#102a1b;--focus:#b6e899}}
.message-new{font-size:12px;color:var(--green);font-weight:700;border:1px solid var(--control-line);border-radius:10px;padding:1px 7px}.is-reading .bubble,.turn-output.is-reading{outline:3px solid var(--green);outline-offset:2px}.new-output::before{content:'Neu';display:block;font-size:12px;color:var(--green);font-weight:700;margin-bottom:5px}.auto-read[aria-pressed=true],.record-lock[aria-pressed=true]{background:var(--pale);border-color:var(--green)}.recording-controls{display:flex;gap:8px;align-items:stretch}.recording-controls>button{flex:1;min-width:48px}.session-compose.is-recording #session-read,.session-compose.is-recording #session-stop-read,.session-compose.is-recording #auto-read{display:none}.session-compose.is-recording{flex-wrap:nowrap}.session-compose.is-recording>button{min-width:48px;flex:1;padding:8px;font-size:13px}.session-compose.is-recording #session-mic{margin-left:0}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0}body{font:16px/1.45 var(--font);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}button,.button{min-width:48px;min-height:48px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:inherit;padding:10px 15px;display:inline-flex;gap:9px;align-items:center;justify-content:center;cursor:pointer;font-weight:600;line-height:1.2;touch-action:manipulation;-webkit-tap-highlight-color:transparent;text-decoration:none}@media(hover:hover){button:hover:not(:disabled),.button:hover{background:var(--pale)}}button:focus-visible,textarea:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--focus);outline-offset:2px}button:disabled{opacity:.45;cursor:default}svg{width:23px;height:23px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}h1,h2,p{margin:0}h1{font-size:22px;line-height:1.25;letter-spacing:-.2px}h2{font-size:20px}button.primary{background:var(--green);border-color:var(--green);color:white}button.primary:hover:not(:disabled){background:var(--primary-hover)}.danger{color:var(--danger)}.icon{width:48px;padding:11px;flex:none}[hidden]{display:none!important}.app{display:grid;grid-template-columns:64px minmax(0,1fr);height:100vh;height:100dvh;overflow:hidden}.rail{background:var(--rail);color:var(--rail-ink);display:flex;flex-direction:column;align-items:center;padding:15px 8px 10px;gap:20px}.brand{height:47px;display:flex;align-items:center;justify-content:center;width:48px;user-select:none}.brand::before{content:"";display:block;width:40px;height:40px;border-radius:50%;background:url(data:image/png;base64,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) center/cover no-repeat}.rail nav{display:flex;flex-direction:column;gap:12px}.rail button{background:transparent;color:inherit;border-color:transparent;position:relative}@media(hover:hover){.rail button:not([aria-current=page]):hover:not(:disabled){background:var(--rail-hover)}}.rail button[aria-current=page]{background:var(--rail-current);color:var(--lime)}.rail button svg{width:24px;height:24px}.rail .info{margin-top:auto;color:var(--rail-ink-2)}.nav-dot{position:absolute;width:7px;height:7px;right:8px;top:7px;border-radius:50%;background:var(--lime)}.main{min-width:0;min-height:0;display:flex;flex-direction:column}.workspace{display:flex;flex:1;min-height:0;min-width:0;flex-direction:column}.header{min-height:76px;flex:none;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:18px;padding:10px 23px}.header .back{padding:10px 12px;background:var(--surface-2);min-width:91px;font-size:15px}.header .back svg{width:20px;height:20px}.identity{flex:1;min-width:0}.identity h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.identity p{font-size:13px;color:var(--muted);margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{display:flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--pale);font-size:13px;font-weight:700;color:var(--green)}.body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--field-line) transparent}.thread{padding:14px 24px 16px;overflow-anchor:none}.day{text-align:center;font-size:13px;letter-spacing:0;color:var(--muted);margin-bottom:12px}.message{margin:0 0 14px;max-width:100%}.message:last-child{margin-bottom:0}.meta{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:9px;margin-bottom:5px}.meta strong{color:var(--green);overflow-wrap:anywhere}.meta time{font-size:12px;flex:none}.message-line{display:flex;align-items:center;gap:8px}.bubble{background:var(--bubble);padding:12px 15px;border-radius:3px 11px 11px 11px;font-size:18px;line-height:1.42;max-width:calc(100% - 56px);white-space:pre-wrap;overflow-wrap:anywhere}.message-read{color:var(--muted);border-color:transparent;background:transparent}.own .meta{justify-content:flex-end}.own .message-line{justify-content:flex-end}.own .bubble{background:var(--own);border-radius:11px 3px 11px 11px;max-width:90%;font-size:17px}.session-thread .bubble{max-width:100%}.attachment{display:flex;align-items:center;gap:13px;border:1px dashed var(--field-line);border-radius:8px;background:var(--bg);padding:11px 14px;width:calc(100% - 56px);color:var(--muted);overflow-wrap:anywhere}.attachment small{display:block;margin-top:3px;font-size:12px}.footer{flex:none;min-height:88px;border-top:1px solid var(--line);background:var(--footer);display:flex;align-items:center;gap:12px;padding:13px 23px}.footer>button{min-height:56px}.footer .primary{min-width:208px}.mic-state{margin-left:auto;text-align:right;font-size:12px;color:var(--muted)}.mic-state strong{display:block;font-size:13px;color:var(--muted);font-weight:400}.mic-state small{font-size:12px}.list{padding:7px 12px}.chat{display:flex;width:100%;min-height:78px;gap:14px;padding:12px 14px;justify-content:flex-start;text-align:left;border:0;border-radius:8px;font-weight:400;background:transparent}.chat.active{background:var(--pale)}.chat+.chat{margin-top:3px}.chat .avatar{width:43px;height:43px}.chat-copy{flex:1;min-width:0}.chat-top{display:flex;gap:12px;align-items:center}.chat-name{font-weight:600;font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat time{margin-left:auto;font-size:12px;color:var(--muted);flex:none}.chat-preview{display:block;font-size:14px;margin-top:5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unread{height:7px;width:7px;display:inline-block;background:var(--green);border-radius:50%;margin-left:6px;vertical-align:3px}.list-footer{font-size:13px;color:var(--muted);min-height:63px;justify-content:space-between}.list-footer>button{min-height:48px}.source-status{overflow-wrap:anywhere}.empty{padding:34px 24px;color:var(--muted);font-size:15px;max-width:650px}.empty h2{color:var(--ink);margin-bottom:10px;font-weight:500}.empty p+p{margin-top:12px}.empty button{margin-top:18px}.draft-body{padding:22px 24px;display:flex;flex-direction:column;gap:14px}.eyebrow{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.4px}.draft-body label{font-size:13px;color:var(--muted)}textarea{width:100%;resize:none;min-height:110px;height:144px;padding:17px 19px;border:1px solid var(--field-line);border-radius:10px;background:var(--field);font-size:21px;line-height:1.5;color:var(--ink);margin-top:8px}input{min-height:48px;width:100%;padding:10px 12px;border:1px solid var(--field-line);border-radius:8px;background:var(--paper);color:var(--ink)}.draft-note{font-size:13px;color:var(--muted);max-width:570px}.draft-tools{display:flex;gap:10px;flex-wrap:wrap}.draft-tools button{font-size:14px;min-height:48px}.draft-footer{justify-content:space-between}.draft-footer .primary{min-width:224px}.audio-panel{font-size:13px;color:var(--muted);display:flex;gap:10px;align-items:center;min-height:24px}.audio-panel p{flex:1;min-width:0}.audio-panel meter{width:75px;height:12px;accent-color:var(--green)}.audio-panel.error{color:var(--danger)}.record-countdown{font-size:18px;color:var(--danger);font-variant-numeric:tabular-nums;white-space:nowrap}.recording-body textarea{font-size:18px;height:112px}.recording-title{display:flex;align-items:center;gap:13px;padding:12px 0}.recording-title svg{height:32px;width:32px;color:var(--green)}.new-messages{border-top:1px solid var(--line);min-height:48px;border-radius:0;flex:none;font-size:13px}.session-compose{padding:10px 23px;gap:10px}.session-compose textarea{font-size:16px;line-height:1.35;height:56px;min-height:56px;flex:1;margin:0;padding:9px 12px}.session-compose .primary{min-width:48px}.turn-box{margin-top:18px;border-top:1px solid var(--line);padding-top:15px}.turn-state{font-size:12px;color:var(--muted);margin-bottom:8px}.turn-output{white-space:pre-wrap;overflow-wrap:anywhere;font-size:18px}.native-request{margin-top:14px;padding:15px;background:var(--bg);border:1px solid var(--line);border-radius:8px}.native-request p{white-space:pre-wrap;overflow-wrap:anywhere}.native-request pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;margin:10px 0}.native-request form{display:flex;flex-direction:column;gap:10px}.native-request label{font-size:14px;display:flex;flex-direction:column;gap:5px}.native-request textarea{font-size:16px;height:90px;min-height:90px;margin:0}.native-choices{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.session-audio{padding:5px 23px 9px;background:var(--footer)}.gate{padding:28px 30px;overflow:auto;min-height:0}.gate h1{font-size:25px;margin:5px 0 12px}.gate p{color:var(--muted);font-size:15px;max-width:560px}.gate>button{margin-top:20px}.pair-layout{display:flex;align-items:center;gap:24px;margin:24px 0 15px}.pair-qr{width:174px;height:174px;image-rendering:pixelated;border:1px solid var(--line);border-radius:6px}.pair-code{font-size:36px;font-weight:700;letter-spacing:7px;color:var(--green);display:block;font-variant-numeric:tabular-nums;margin:6px 0 8px}.pair-link{display:block;overflow-wrap:anywhere;color:var(--green);font-size:13px;padding:12px 0;min-height:48px}.pair-expiry{font-size:12px!important}.gate .eyebrow{margin-top:12px}.receipt{padding:30px 24px}.receipt h2{margin-bottom:10px}.receipt p{max-width:570px;color:var(--muted);margin-bottom:20px}#notice{position:fixed;left:82px;right:18px;bottom:105px;max-width:640px;background:var(--ink);color:var(--paper);border:1px solid var(--ink);padding:15px 18px;border-radius:var(--r-control);font-size:14px;z-index:3;box-shadow:var(--shadow-2);pointer-events:none}.admin-page{height:auto;min-height:100%;background:var(--bg)}.admin-shell{max-width:840px;margin:0 auto;padding:28px 24px}.admin-header{display:flex;gap:20px;align-items:center;margin-bottom:25px}.admin-header .brand{background:var(--rail);width:52px;height:52px;border-radius:8px}.admin-header p{font-size:14px;color:var(--muted);margin-top:6px}.admin-section{margin:24px 0}.admin-section>p{font-size:14px;color:var(--muted);margin-top:8px}.admin-card{padding:18px;margin-top:12px;border:1px solid var(--line);background:var(--paper);border-radius:10px;overflow-wrap:anywhere}.admin-card form{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}.admin-card label{font-size:13px;display:flex;flex-direction:column;gap:5px}.admin-card form button{grid-column:1/-1;justify-self:start}.admin-card p{font-size:14px;color:var(--muted);margin-top:7px}.admin-card .device-actions{margin-top:15px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.admin-card .pair-id{font:12px/1.4 var(--font-mono)}.admin-note{border-top:1px solid var(--line);padding-top:18px;font-size:14px;color:var(--muted)}#admin-status{font-size:14px;min-height:24px;white-space:pre-wrap}#admin-status.error{color:var(--danger)}
.native-request select{min-height:48px;padding:10px 12px;border:1px solid var(--field-line);border-radius:8px;background:var(--paper);color:var(--ink);max-width:100%}.clarify-group{border:1px solid var(--line);border-radius:8px;padding:10px;min-width:0}.native-request .check-choice{display:flex;flex-direction:row;align-items:center;gap:12px;min-height:48px}.check-choice input{width:22px;height:22px;min-height:22px;flex:none;accent-color:var(--green)}
@media(min-width:1000px){.thread{padding-left:max(24px,calc((100% - 850px)/2));padding-right:max(24px,calc((100% - 850px)/2))}.draft-body{padding-left:max(24px,calc((100% - 780px)/2));padding-right:max(24px,calc((100% - 780px)/2))}}
@media(max-width:580px){.header{gap:10px;padding:10px 12px;min-height:80px}.header h1{font-size:19px}.header .back{min-width:48px;width:48px;padding:10px}.header .back span{display:none}.header .avatar{display:none}.identity p{font-size:12px}.thread{padding:15px 13px}.bubble{font-size:17px;padding:11px 13px}.own .bubble{font-size:16px}.message-line{gap:5px}.bubble{max-width:calc(100% - 53px)}.attachment{width:100%}.footer{padding:11px 12px;gap:9px;flex-wrap:wrap;min-height:80px}.footer>button{min-height:52px;padding:10px 12px}.footer .primary{min-width:0;flex:1;font-size:14px}.mic-state{display:none}.footer .read-all{width:52px;padding:12px}.read-all span{display:none}.list{padding:7px}.chat{padding:12px 7px;gap:9px}.chat .avatar{width:36px;height:36px;font-size:12px}.chat-name{font-size:16px}.chat-preview{font-size:13px}.chat time{font-size:12px}.list-footer{font-size:12px;min-height:72px}.draft-body{padding:18px 14px;gap:12px}.draft-body textarea{font-size:19px;height:155px}.draft-tools{gap:8px}.draft-footer button{font-size:13px}.audio-panel{align-items:flex-start;flex-wrap:wrap}.session-compose textarea{flex-basis:100%;font-size:16px;height:60px;min-height:60px}.session-audio{padding:5px 12px 9px}.gate{padding:24px 16px}.pair-layout{gap:14px;flex-wrap:wrap;margin-top:16px}.pair-qr{width:136px;height:136px}.pair-code{font-size:29px;letter-spacing:4px}.gate h1{font-size:22px}.admin-shell{padding:22px 14px}.admin-card form{grid-template-columns:1fr}#notice{left:77px;right:12px;bottom:111px;font-size:13px}}
@media(max-height:480px){.header{min-height:67px}.draft-body{padding-top:13px;gap:9px}textarea{height:94px;min-height:94px}.footer{min-height:75px}.pair-qr{width:125px;height:125px}.pair-layout{margin-top:14px}.gate{padding-top:16px}}
.admin-card.pair-target{border:3px solid var(--green);background:var(--pale);scroll-margin-top:16px}.pair-target h2{color:var(--green)}.pair-hint{font-weight:600}
.admin-card .pair-warning{color:var(--danger);font-weight:600}.admin-card .pair-confirm{grid-column:1/-1;flex-direction:row;align-items:center;gap:12px;min-height:48px;font-size:14px}.admin-card .pair-confirm input{width:22px;height:22px;min-height:0;flex:none;margin:0;accent-color:var(--green)}
.message-image{display:block;max-width:min(100%,380px);max-height:280px;width:auto;height:auto;object-fit:contain;border-radius:6px;margin-top:10px}.load-image{display:flex;margin-top:8px;font-size:14px}.attachment>div{min-width:0;max-width:100%}
.image-launcher{display:flex;max-width:100%;padding:0;margin-top:10px;border:0;background:transparent;cursor:zoom-in}.image-launcher .message-image{margin:0}
.image-viewer{position:fixed;inset:0;margin:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;padding:0;border:0;background:#111917;color:#fff;overflow:hidden;overscroll-behavior:contain;touch-action:none}
.image-viewer[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}.image-viewer::backdrop{background:#111917}.image-viewer-toolbar{display:flex;gap:8px;align-items:center;padding:12px;z-index:1}.image-viewer-toolbar button{background:#233b30;color:white;border-color:#6a8176;min-height:52px}.image-viewer-toolbar button:first-child{margin-right:auto}.image-viewer-toolbar button:hover:not(:disabled){background:#365442}.image-viewer-toolbar button:focus-visible{outline-color:#c7e8a1;outline-offset:2px}.image-viewer-stage{display:block;width:100%;height:100%;min-height:0;touch-action:none;user-select:none;overflow:hidden;cursor:grab}.image-viewer-stage:active{cursor:grabbing}.image-viewer-picture{pointer-events:none}.image-viewer-hint{text-align:center;font-size:14px;line-height:1.4;padding:10px 12px;color:#d0ddd5}
@media(max-width:580px){.image-viewer-toolbar{gap:6px;padding:10px 8px}.image-viewer-toolbar button{font-size:14px;padding:10px 8px}.image-viewer-hint{font-size:12px}}
.session-reasoning-text{margin:8px 0 14px;border-left:2px solid var(--line);padding:8px 12px;color:var(--muted)}.reasoning-copy{white-space:pre-wrap;overflow-wrap:anywhere}.session-display{display:flex;gap:4px;flex:none}.session-display button[aria-pressed=true]{background:var(--pale);border-color:var(--control-line)}.session-extra{margin:8px 0 14px;border-left:2px solid var(--line);padding-left:10px}.session-extra summary{min-height:48px;padding:12px 8px;cursor:pointer;color:var(--muted);font-size:15px;font-weight:600}.session-extra summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.session-extra .message:first-of-type{margin-top:8px}.session-thread .message-line{min-width:0}.session-thread .bubble{min-width:0;max-width:calc(100% - 56px)}.session-thread .own .bubble{max-width:100%}.session-compose{flex-wrap:wrap}.session-compose .session-setting-controls{margin-left:auto}.session-audio{flex-wrap:wrap;gap:8px}.session-read-status{font-size:12px;color:var(--muted)}.markdown{white-space:normal}.markdown p{white-space:pre-wrap}.markdown>*+*{margin-top:12px}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-size:1.12em;line-height:1.3;letter-spacing:0;margin-bottom:0}.markdown ul,.markdown ol{padding-left:25px;margin-bottom:0}.markdown li+li{margin-top:5px}.markdown code{font-family:var(--font-mono);font-size:.9em;background:var(--code);border-radius:3px;padding:1px 4px}.markdown pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--code);padding:12px;border-radius:6px;margin-bottom:0}.markdown pre code{padding:0;background:none}.turn-diagnostics{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;color:var(--danger);margin:8px 0}.clarify-dictate{align-self:flex-start;font-size:14px}
@media(max-width:580px){.session-display button{padding:8px;font-size:14px}.session-compose #session-mic{flex:1}.session-compose button{font-size:13px}}
.read-playback-controls{display:flex;flex:none;align-items:center;gap:8px}.read-playback-controls button{flex:none;min-height:48px;min-width:48px}.read-playback-controls #read-next svg{transform:rotate(180deg)}
/* One horizontally reachable control row; touch targets never shrink. */
.footer.has-read-playback,.footer.session-compose:not(.is-recording),.footer.chat-footer:not(.is-recording){flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain}
.footer.has-read-playback>button,.footer.session-compose:not(.is-recording)>button,.footer.chat-footer:not(.is-recording)>button{flex:none;min-width:48px;min-height:48px}
.footer.has-read-playback .read-playback-controls button{width:48px;height:48px;padding:10px}
.footer.has-read-playback #read-speed{width:64px}
.footer.has-read-playback #read-speed svg{display:none}
.footer.has-read-playback #read-speed .action-badge{position:static;font-size:14px;background:transparent;color:inherit;padding:0}
.footer.has-read-playback #read-speed span{display:inline}
.activity-list .chat-name{display:flex;align-items:center;font-weight:400}.activity-list .chat-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-list .unread{flex:none}.activity-list .chat-name.has-unseen{font-weight:700}
.favorite-row{display:flex;align-items:center;gap:4px}.favorite-row+.favorite-row{margin-top:3px}.favorite-row>.chat{flex:1;min-width:0;width:auto}.favorite-star{flex:none;width:48px;height:48px;padding:0;font-size:27px;border-color:transparent;background:transparent;color:var(--muted)}.favorite-star[aria-pressed=true]{color:var(--green);background:var(--pale)}
.gmail-top .session-settings{display:flex;flex:none;flex-wrap:wrap;gap:8px;padding:7px 24px;border-bottom:1px solid var(--line)}.gmail-top .session-settings button{min-height:48px;max-width:100%;font-size:14px}@media(max-width:580px){.gmail-top .session-settings{padding:7px 12px;gap:6px}.gmail-top .session-settings button{font-size:14px;padding:9px 12px}}.session-setting-controls{display:flex;flex:none;gap:8px}.session-compose .session-setting{width:48px;min-width:48px;min-height:48px;flex:none;padding:11px}.session-compose.is-recording .session-setting-controls{display:none}.session-audio #session-settings-reload{font-size:13px;min-height:48px;max-width:100%}.session-settings-status{flex-basis:100%;font-size:12px;color:var(--muted);overflow-wrap:anywhere}.session-chooser{width:min(460px,calc(100% - 28px));max-height:calc(100dvh - 28px);overflow:auto;padding:22px;border:1px solid var(--line);border-radius:var(--r-sheet);color:var(--ink);background:var(--elevated);box-shadow:var(--shadow-3)}.session-chooser::backdrop{background:var(--scrim)}.session-chooser-note{font-size:13px;color:var(--muted);margin-top:8px}.session-chooser-content{display:flex;flex-direction:column;gap:16px;margin:20px 0}.session-chooser-content p{overflow-wrap:anywhere}.session-chooser>button{width:100%}@media(max-width:580px){.session-chooser{padding:18px}.header #new-session{max-width:114px;font-size:14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.draft-footer:empty{display:none}@media(max-width:580px){.chat-footer .read-all{width:auto;padding:10px;font-size:13px}.chat-footer .read-all span{display:inline}.footer #auto-read{font-size:13px;padding:10px}.recording-controls{gap:6px}.recording-controls>button{font-size:12px;padding:7px}}
.gmail-row{min-height:85px;font-weight:400}.gmail-row .chat-name{font-weight:400}.gmail-row.gmail-unread,.gmail-row.gmail-unread .chat-name{font-weight:700}.gmail-row-status{white-space:pre-line;text-align:right;flex:none;font-size:12px;color:var(--muted)}.gmail-message{padding:20px 24px;overflow-wrap:anywhere}.gmail-message h2{margin-bottom:10px}.gmail-meta{color:var(--muted);font-size:14px}.gmail-text{white-space:pre-wrap;font-size:19px;line-height:1.6;margin:20px 0}.gmail-text a{color:var(--green);text-decoration:underline}.gmail-note{font-size:13px;color:var(--muted);border-top:1px solid var(--line);padding-top:12px}.header button[aria-pressed=true]{background:var(--pale);border-color:var(--green)}
/* Shared surfaces: do not leave light-only native forms, code or status chrome. */
.footer,.session-audio{background:var(--footer)}.header .back{background:var(--surface-2)}
.avatar{background:var(--pale);border-color:var(--line);color:var(--green)}
.day,.message-read,.eyebrow,.mic-state strong{color:var(--muted)}
.meta strong{color:var(--green)}
.attachment{background:var(--bg);color:var(--muted);border-color:var(--field-line)}
.body{scrollbar-color:var(--field-line) transparent}
textarea{background:var(--field);border-color:var(--field-line)}
input,.native-request select{background:var(--paper);border-color:var(--field-line);color:var(--ink)}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}
.admin-card{background:var(--paper)}
.admin-card.pair-target{background:var(--pale)}
.markdown code,.markdown pre{background:var(--code)}
.markdown pre code{background:none}
.bubble a,.markdown a{color:var(--green)}
.markdown-table{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}.markdown table{border-collapse:collapse;font-size:.92em;line-height:1.35}.markdown th,.markdown td{border:1px solid var(--line);padding:6px 10px;text-align:left;vertical-align:top;white-space:normal;overflow-wrap:normal}.markdown th{background:var(--code);font-weight:700}.markdown th[data-nowrap],.markdown td[data-nowrap]{white-space:nowrap}.markdown [data-align=center]{text-align:center}.markdown [data-align=right]{text-align:right}
.markdown pre.has-code-action{display:flow-root}.markdown pre>button.code-copy,#workspace .markdown pre>button.code-copy{float:right;width:48px;min-width:48px;height:48px;min-height:48px;margin:-12px -12px 2px 8px;padding:13px;border-color:transparent;background:transparent;color:var(--muted)}.markdown pre>button.code-copy>svg,#workspace .markdown pre>button.code-copy>svg{display:block;width:22px;height:22px}
button.primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
button.primary:hover:not(:disabled){background:var(--primary-hover)}
button:focus-visible,textarea:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,.session-extra summary:focus-visible,.session-chooser-content select:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
/* Opt-in icon controls only; native choices and top navigation keep their labels.
   Explicit SVG visibility beats the legacy narrow-screen speech rules. */
#workspace button.action-icon{position:relative;flex:0 0 48px;width:48px;min-width:48px;min-height:48px;height:48px;padding:11px;gap:0;margin-left:0}
#workspace button.action-icon>svg{display:block;width:23px;height:23px}
#workspace button.voice-mode:has(>svg[data-icon=read]){padding:7px;box-sizing:border-box}
#workspace button.voice-mode>svg[data-icon=read]{width:30px;height:30px;min-width:30px;flex:none}
#workspace button.action-icon.voice-mode .action-badge{top:0;bottom:auto;right:0;font-size:11px;line-height:11px;padding:0 2px;max-width:40px}
.resume-shell{flex:1;display:grid;place-content:center;color:var(--muted);min-height:0}
.message.own.local-outgoing .bubble{background:var(--bubble);color:var(--muted);border:1px solid var(--line)}
.local-outgoing{display:flex;flex-direction:column;align-items:flex-end}
.outgoing-status{color:var(--muted);font-size:12px;max-width:100%;overflow-wrap:anywhere}
.local-outgoing[data-send-state=failed] .outgoing-status,.local-outgoing[data-send-state=unknown] .outgoing-status,.submission-warning{color:var(--danger)}
/* Waiting sends (send queue): own bubble with a dashed edge, „wartet“, two 48px actions. */
.session-queue{margin-top:14px;display:flex;flex-direction:column;gap:12px}
.message.own.queued-send .bubble{border-style:dashed}
.queued-send .outgoing-status{margin-top:4px}
.queued-send-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:6px}
.queued-send-actions button{min-height:48px;font-size:15px;padding:8px 14px}
.queued-send-actions svg{width:20px;height:20px}
/* Library-specific paint: global legacy SVG stroke must never outline filled
   Phosphor geometry or replace Lucide's official 2-unit strokes. */
svg[data-icon-set=phosphor]{fill:currentColor;stroke:none;stroke-width:0}
svg[data-icon-set=lucide]{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.voice-mode{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.voice-mode.auto-active{background:var(--pale);border-color:var(--green);color:var(--green)}
#workspace button.voice-mode>.hold-ring{display:none;position:absolute;inset:0;width:100%;height:100%;pointer-events:none;fill:none;stroke:currentColor;stroke-width:3;transform:rotate(-90deg)}
#workspace button.voice-mode.is-holding>.hold-ring{display:block}
.hold-ring circle{stroke-dasharray:100;stroke-dashoffset:100}
.voice-mode.hold-ready>.hold-ring circle{stroke-dashoffset:0}
.favorite-star[aria-pressed=true] svg[data-icon-set=lucide]{fill:currentColor}
#workspace button.action-icon .action-badge{display:block;position:absolute;right:2px;bottom:1px;max-width:44px;padding:0 3px;border-radius:5px;background:var(--paper);color:var(--ink);font-size:11px;line-height:14px;font-weight:700;font-variant-numeric:tabular-nums}
#workspace button.action-icon[aria-pressed=true]{border:2px solid var(--green);background:var(--pale)}
.chat-footer,.session-compose{gap:8px}
.recording-controls .action-icon{align-self:center}

/* One settings surface: fixed heading/close, one scroll area, native disclosure. */
.session-chooser.unified-settings{width:min(680px,calc(100% - 28px));padding:0;overflow:hidden}
.unified-settings[open]{display:flex;flex-direction:column}
.settings-heading{padding:16px 22px;border-bottom:1px solid var(--line);flex:none}
.settings-heading h2{margin:0;font-size:21px}
.settings-body{padding:0 22px;min-height:0;overflow:auto;overscroll-behavior:contain}
.settings-session{padding:12px 0}
.settings-session h3{margin:0;font-size:17px}
.unified-settings .session-chooser-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;margin:12px 0}
.unified-settings .session-chooser-content>p{grid-column:1/-1;margin:0}.unified-settings .session-chooser-content>p:empty{display:none}
.unified-settings .session-chooser-content>button{align-self:end;min-height:48px}
.unified-settings .session-chooser-content>.danger{grid-column:1/-1}
.settings-title{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
:root[data-dashboard] .unified-settings .settings-rename{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 12px;align-items:end}
.settings-rename label{grid-column:1/-1}
.settings-title p:empty,.settings-section p:empty{display:none}
.settings-title p,.settings-section p{font-size:14px;overflow-wrap:anywhere;margin:12px 0}
.settings-section{padding:0 0 8px;border-top:1px solid var(--line)}
.settings-section>summary{min-height:56px;cursor:pointer;padding:16px 0;font-size:17px;font-weight:600}
.settings-section>summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.settings-section .settings-hermes-actions{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}
.settings-hermes-actions>button{flex:1;min-width:190px}
.settings-section #management-result:not(:empty){padding:16px 0 8px;border-top:1px solid var(--line)}
#management-result h3{font-size:17px}
.settings-footer{padding:8px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;flex:none;background:var(--footer)}
:root[data-dashboard] .unified-settings .display-settings{padding:0;overflow:visible}
:root[data-dashboard] .unified-settings .display-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
:root[data-dashboard] .unified-settings .display-intro{margin:0 0 16px}
:root[data-dashboard] .unified-settings .display-field :is(input,select){background:var(--field);border-color:var(--field-line);font-weight:400}
:root[data-dashboard] .unified-settings .display-note{margin:8px 0}
:root[data-dashboard] .unified-settings .display-maintenance{margin-bottom:16px}
@media(max-width:580px){.settings-heading{padding:14px 16px}.settings-body{padding:0 16px}.settings-footer{padding:8px 16px}.unified-settings .session-chooser-content{grid-template-columns:minmax(0,1fr)}:root[data-dashboard] .unified-settings .display-grid{grid-template-columns:minmax(0,1fr)}:root[data-dashboard] .unified-settings .settings-rename{grid-template-columns:minmax(0,1fr)}.settings-hermes-actions>button{min-width:0;flex-basis:100%}}

/* Dashboard-only visual preferences. No labels, interaction or private state changed. */
:root[data-dashboard][data-theme=dark]{color-scheme:dark;--paper:#19221d;--bg:#121915;--ink:#e6eee8;--muted:#afc1b5;--line:#42574a;--green:#9bd9b1;--pale:#293f32;--rail:#0c120f;--lime:#c7e8a1;--bubble:#29322d;--own:#244633;--danger:#ffb39e;--footer:#19221d;--surface-2:#26322c;--elevated:#212b26;--fill-pressed:#34433b;--danger-fill:#3d2a24;--warning:#f2c46b;--warning-fill:#3a3222;--switch-off:#3a4a41;--scrim:rgb(0 0 0/.6);--shadow-1:none;--shadow-2:0 10px 30px rgb(0 0 0/.5);--shadow-3:0 18px 60px rgb(0 0 0/.6);--segment-on:#3a4a41;--grouped:#121915;--group-bg:#212b26;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23afc1b5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--field:#202e25;--field-line:#748f7e;--code:#35423a;--primary:#a6d9b5;--primary-hover:#bfeaca;--on-primary:#102a1b;--focus:#b6e899}
:root[data-dashboard][data-contrast=increased]{--muted:var(--ink);--line:var(--field-line)}
:root[data-dashboard][data-contrast=increased] :is(.bubble,.native-request,.session-chooser,.attachment){outline:1px solid var(--field-line)}
:root[data-dashboard][data-previews=hide] .whatsapp-preview,
:root[data-dashboard][data-timestamps=hide] .message-timestamp{display:none}
:root[data-dashboard] .display-settings{padding:20px 24px;overflow:auto}
:root[data-dashboard] .display-settings>*{max-width:880px}
:root[data-dashboard] .display-intro{color:var(--muted);font-size:14px;margin-bottom:20px}
:root[data-dashboard] .display-group{padding:16px 0;border-top:1px solid var(--line)}
:root[data-dashboard] .display-group h2{font-size:17px;color:var(--green);margin-bottom:12px}
:root[data-dashboard] .display-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px;align-items:end}
:root[data-dashboard] .display-group:first-of-type .display-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
:root[data-dashboard] .display-field{display:flex;flex-direction:column;gap:5px;min-width:0}
:root[data-dashboard] .display-field label{font-size:14px;font-weight:600;overflow-wrap:anywhere}
:root[data-dashboard] .display-field :is(select,input){min-width:48px;min-height:48px;width:100%;padding:8px 10px;background:var(--pale);color:var(--ink);font-weight:600;border:1px solid var(--green);border-radius:8px}
:root[data-dashboard] .display-field :is(select,input):focus-visible{outline:3px solid var(--focus);outline-offset:2px}
:root[data-dashboard] :is(.display-note,.display-feedback){font-size:14px;color:var(--muted);margin:16px 0;overflow-wrap:anywhere}
:root[data-dashboard] .display-error{color:var(--danger);font-size:14px}
:root[data-dashboard][data-text-size=large] .display-field input{font-size:20px}
:root[data-dashboard] .display-maintenance{border-top:1px solid var(--line);padding-top:16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
:root[data-dashboard] .display-maintenance button{max-width:100%;text-align:left}
:root[data-dashboard] .display-maintenance .display-feedback{margin:0}
:root[data-dashboard][data-text-size=large] :is(.display-intro,.display-field label){font-size:16px}
:root[data-dashboard][data-text-size=large] body{font-size:20px}
:root[data-dashboard][data-text-size=large] .session-audio>p{flex-basis:100%}
:root[data-dashboard][data-contrast=increased] :is(.is-reading .bubble,.turn-output.is-reading){outline:3px solid var(--green)}
:root[data-dashboard][data-text-size=large] :is(.bubble,.own .bubble,.turn-output,.session-reasoning-text){font-size:22px}
:root[data-dashboard][data-text-size=large] :is(.gmail-text,.draft-body textarea){font-size:23px}
:root[data-dashboard][data-text-size=large] :is(.native-request textarea,.session-compose textarea,.native-request select,.native-request input){font-size:20px}
:root[data-dashboard][data-text-size=large] :is(.chat-name,.header h1,.gmail-message h2){font-size:22px}
:root[data-dashboard][data-text-size=large] :is(.meta,.meta time,.day,.chat-preview,.chat time,.gmail-meta,.gmail-row-status,.native-request label,.native-request pre,.gate p,.empty,.identity p,.draft-note,.draft-body label,.display-note,.display-feedback,.session-chooser-note,.session-settings-status,.session-read-status,.audio-panel,.gmail-note,.attachment small,.image-viewer-hint){font-size:16px}
:root[data-dashboard][data-text-size=large] :is(.session-display button,.gmail-top .session-settings button,.draft-tools button,.draft-footer button,.image-viewer-toolbar button){font-size:16px}
:root[data-dashboard][data-spacing=compact] .chat{min-height:60px;padding-top:6px;padding-bottom:6px}
:root[data-dashboard][data-spacing=compact] .thread{padding-top:8px;padding-bottom:8px}
:root[data-dashboard][data-spacing=compact] .message{margin-bottom:12px}
:root[data-dashboard][data-spacing=compact] .bubble{padding:8px 11px}
:root[data-dashboard][data-spacing=compact] :is(.gmail-message){padding-top:10px;padding-bottom:10px}
:root[data-dashboard][data-spacing=compact] :is(.native-request){padding-top:8px;padding-bottom:8px}
:root[data-dashboard][data-spacing=compact] :is(.footer,.header){padding-top:8px;padding-bottom:8px;min-height:64px}
:root[data-dashboard][data-spacing=compact] .display-grid{gap:10px 18px}
:root[data-dashboard][data-spacing=compact] .draft-body{gap:10px;padding-top:12px;padding-bottom:12px}
:root[data-dashboard] .rail{overflow-y:auto;flex-shrink:0}
:root[data-dashboard] .rail nav,:root[data-dashboard] .rail button{flex-shrink:0}
/* Keep source order / keyboard order; the gear owns the navigation's spare space. */
:root[data-dashboard] .rail .brand{flex-shrink:0}
:root[data-dashboard] .rail nav{flex:1 0 auto}
:root[data-dashboard] #nav-display{margin-top:auto}
:root[data-dashboard] .rail .info{margin-top:0}
/* Chat, session and contact lists reload from their header (#list-reload); in
   Gmail's footer the refresh is first in the DOM, not merely visually reordered. */
.list-footer{justify-content:flex-start;flex-wrap:wrap}
.list-footer .source-status{flex:0 1 auto;min-width:0}
/* No pager and no status text: no empty bar. Zero height instead of display:none
   keeps the status in the accessibility tree, so later text is still announced. */
.workspace>.list-footer:not(:has(button)):has(>.source-status:empty){min-height:0;height:0;padding:0;border-top:0;overflow:hidden}
.session-page-next svg{transform:rotate(180deg)}
.session-page{white-space:nowrap;font-size:14px}
.list-footer:has(.session-page) button{font-size:14px}
.list-footer:has(.session-page){gap:8px}
.list-footer:has(.session-page) button{flex:none;min-width:48px;min-height:48px}
@media(max-width:580px){.list-footer:has(.session-page) button:not(.action-icon){padding:10px}.list-footer:has(.session-page) button:not(.action-icon) svg{display:none}}
.gmail-row .chat-name{display:block}
:root[data-dashboard][data-text-size=large] .source-status{font-size:16px}
@media(max-width:580px){
  .gmail-row{flex-wrap:wrap;row-gap:5px}
  .gmail-row .chat-copy{flex-basis:100%}
  .gmail-row-status{text-align:left}
  :root[data-dashboard] .display-settings{padding:16px 14px}
  :root[data-dashboard] .display-grid,:root[data-dashboard] .display-group:first-of-type .display-grid{grid-template-columns:minmax(0,1fr)}
  :root[data-dashboard][data-text-size=large] .header{gap:8px}
  :root[data-dashboard][data-text-size=large] .header h1{font-size:20px}
}
/* Shared voice presenter: idle panels and inactive meters reserve no space. */
.audio-panel[hidden],.session-settings-feedback[hidden]{display:none!important}
.audio-panel>p[hidden],.audio-panel>meter[hidden]{display:none!important}
.footer~.audio-panel{flex:none;padding:5px 23px 9px;background:var(--footer)}
:root[data-dashboard][data-text-size=large] .footer~.audio-panel>p{flex-basis:100%}
@media(max-width:580px){.footer~.audio-panel{padding:5px 12px 9px}}
.session-settings-feedback{display:flex;flex:none;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 24px}
@media(max-width:580px){.session-settings-feedback{padding:6px 12px}}

/* Calm four-card start. Lists remain three large, literal, exact-target rows. */
.home-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(238px,1fr));gap:16px;padding:20px;background:var(--bg)}
.home-card{min-width:0;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:16px;background:var(--paper);overflow:hidden}
.home-card-head{display:flex;align-items:center;gap:10px;min-height:64px;padding:8px 16px}
.home-card-head h2{display:flex;align-items:center;gap:10px;flex:1;min-width:0;font-size:20px;font-weight:600;letter-spacing:-.2px}
.home-card-head h2 svg{color:var(--green);width:23px;height:23px}
.home-all{border:0;background:transparent;color:var(--muted);font-size:16px;padding:8px}
.home-card-body{flex:1;min-height:0;padding:0 10px 10px;display:flex;flex-direction:column;justify-content:center}
.home-row{width:100%;flex:1;min-height:56px;max-height:110px;min-width:0;text-align:left;justify-content:space-between;border:0;border-radius:8px;padding:10px;gap:12px;background:transparent;font-weight:400}
.home-row+.home-row{border-top:1px solid var(--line);border-radius:0 0 8px 8px}
.home-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.home-title{font-size:19px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.home-preview{font-size:16px;line-height:1.25;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Hermes work on a session (Home): words first, colour only as a second cue. */
.home-work{font-weight:600;color:var(--green)}
.home-work[data-work^=waiting]{color:var(--ink);background:var(--warning-fill);border-radius:999px;padding:0 7px}
.home-time{flex:none;width:48px;white-space:normal;text-align:right;font-size:14px;line-height:1.4;color:var(--muted);font-variant-numeric:tabular-nums}
.home-status{color:var(--muted);font-size:17px;padding:20px;line-height:1.5}
.home-accounts{display:flex;gap:4px}.home-accounts button{min-height:48px;padding:8px 10px;font-size:16px;border-color:transparent;background:transparent;color:var(--muted)}
.home-accounts button[aria-pressed=true]{background:var(--pale);color:var(--green)}
#home-facts .home-card-body{padding:0 26px 20px;justify-content:center;gap:10px}
.home-quota-freshness{flex:0 1 auto;max-width:66%;font-size:13px;line-height:1.25;color:var(--muted);text-align:right}
.home-quota{display:flex;flex-direction:column;gap:7px}.home-quota-line{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:17px}.home-quota-line strong{font-size:26px;font-weight:600;letter-spacing:-.5px;white-space:nowrap}
.home-quota progress{display:block;width:100%;height:7px;appearance:none;border:0;border-radius:6px;background:var(--bg);overflow:hidden;accent-color:var(--green)}
.home-quota progress::-webkit-progress-bar{background:var(--bg)}.home-quota progress::-webkit-progress-value{background:var(--green);border-radius:6px}.home-quota progress::-moz-progress-bar{background:var(--green)}
.home-reset{font-size:16px;color:var(--muted)}
.home-credits{font-size:17px;line-height:1.25;overflow-wrap:anywhere}
/* One row per subscription; the 5-hour and weekly windows are aligned columns. */
.home-quota-table{width:100%;table-layout:fixed;border-collapse:collapse}
.home-quota-table :is(th,td){padding:3px 0;text-align:left;vertical-align:top;font-weight:400}
.home-quota-table :is(th,td)+:is(th,td){padding-left:12px}
.home-quota-table thead :is(th,td){padding-top:0;padding-bottom:1px;font-size:14px;color:var(--muted)}
.home-quota-table thead td{width:25%}
.home-quota-table tbody tr+tr>*{border-top:1px solid var(--line);padding-top:5px}
.home-quota-source{font-size:17px;line-height:1.2;overflow-wrap:anywhere}
.home-quota-name,.home-quota-vendor,.home-quota-stale{display:block}
.home-quota-vendor{font-size:14px;color:var(--muted)}
.home-quota-stale{font-size:14px;color:var(--danger)}
.home-quota-table .home-quota{gap:3px}
.home-quota-unit{font-size:15px;font-weight:400;letter-spacing:0;color:var(--muted)}
.home-quota-table .home-reset{font-size:13px;line-height:1.2}
.home-quota-none,.home-quota-missing{font-size:16px;color:var(--muted)}
:root[data-text-size=large] .home-title{font-size:22px}:root[data-text-size=large] :is(.home-preview,.home-reset,.home-status,.home-accounts button,.home-all){font-size:18px}
:root[data-text-size=large] .home-quota-table .home-reset{font-size:14px}
:root[data-text-size=large] .home-time{font-size:16px;width:55px}
@media(max-width:1000px){.home-grid{gap:12px;padding:12px}.home-card-head{padding:4px 12px;min-height:54px;gap:5px}.home-card-head h2{font-size:18px;gap:7px}.home-card-head h2 svg{width:20px;height:20px}.home-card-body{padding:0 6px 6px}.home-row{padding:8px;gap:8px}.home-title{font-size:18px}.home-preview{font-size:15px}.home-accounts button{padding:6px;font-size:15px}#home-facts .home-card-body{padding:0 18px 8px;gap:4px}.home-quota{gap:3px}.home-quota-line{line-height:1.2}.home-quota-line strong{font-size:23px}}
@media(max-width:650px){.home-grid{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-auto-rows:auto;overflow:auto}.home-row{min-height:68px}.home-card{flex-shrink:0;overflow:visible}.home-card-body{flex:none}}
/* Narrow cards: smaller numbers and gaps so "100 % übrig" fits each window column. */
@media(max-width:1000px){.home-quota-table :is(th,td)+:is(th,td){padding-left:8px}.home-quota-table .home-quota-line strong{font-size:20px}.home-quota-table .home-quota-unit{font-size:14px}}
@media(max-width:650px){#home-facts .home-card-body{padding:0 10px 8px}}

/* Fit the session toolbar to its controls; status content lives in the thread. */
.footer.session-compose{min-height:0;padding-top:8px;padding-bottom:8px}
/* Session feedback is conversation content; the control row never reserves a status row. */
.session-thread>.session-audio{margin:12px 0;padding:10px 12px;border-left:2px solid var(--line);border-radius:0 8px 8px 0;background:var(--bubble);overflow-wrap:anywhere}
.session-thread>.session-audio p{margin:0}
.session-thread>.session-audio.error{border-left-color:var(--danger)}
.session-thread .reasoning-only .session-reasoning-text{margin-bottom:0}
.turn-thinking{display:flex;align-items:center;gap:6px;width:max-content;min-height:44px;padding:15px 18px;border-radius:14px 14px 14px 4px;background:var(--bubble);color:var(--muted);margin:8px 0}
.turn-thinking span,.loading-dots span{width:7px;height:7px;border-radius:50%;background:currentColor;animation:session-thinking 1.4s ease-in-out infinite}
.turn-thinking span:nth-child(2),.loading-dots span:nth-child(2){animation-delay:.16s}.turn-thinking span:nth-child(3),.loading-dots span:nth-child(3){animation-delay:.32s}
.loading-label{display:flex;align-items:center;gap:12px}
.loading-dots{display:inline-flex;align-items:center;gap:5px;color:var(--muted)}
.turn-thinking[hidden]{display:none!important}
@keyframes session-thinking{0%,60%,100%{opacity:.45;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
@media(prefers-reduced-motion:reduce){.turn-thinking span,.loading-dots span{animation:none;opacity:.7}}

/* Desktop opts into typing, not a centred shell: the rail stays at the viewport edge.
   The form belongs to the existing icon footer, with no second bar or heading. */
[data-desktop-mode=on] .footer:is(.chat-footer,.session-compose){align-items:flex-start}
.footer .typed-compose{flex:1;min-width:220px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:5px 8px;margin:0}
.footer .typed-compose textarea{width:100%;min-width:0;min-height:48px;max-height:160px;margin:0;resize:none;overflow-y:auto;padding:10px 12px;border:1px solid var(--field-line);border-radius:9px;color:var(--ink);font-size:17px;line-height:1.4}
.footer .typed-compose button{align-self:start;min-width:48px;min-height:48px}

.footer.is-recording .typed-compose{display:none}
@media(max-width:760px){
  [data-desktop-mode=on] .footer:is(.chat-footer,.session-compose){flex-wrap:wrap}
  .footer .typed-compose{flex-basis:100%;min-width:0;order:1}
  .footer .typed-compose button{padding:10px}

}

.stream-view{padding:16px 23px}
.stream-note{color:var(--muted);margin-bottom:12px}
.stream-favs{display:flex;gap:8px;overflow:auto;margin-bottom:12px}
.stream-fav{background:var(--paper);color:var(--ink);border-color:var(--line);white-space:nowrap}
.stream-fav.active{background:var(--pale);border-color:var(--green);color:var(--green)}
.stream-fav img,.stream-fav .avatar{width:36px;height:36px;border-radius:50%;object-fit:cover}
.stream-form{display:flex;gap:8px;margin-bottom:12px}
.stream-form input{flex:1;min-width:0;min-height:48px;padding:8px 12px;border:1px solid var(--field-line);border-radius:9px;background:var(--field);color:var(--ink)}
.stream-canvas{width:min(100%,960px);height:auto;background:#111;display:block}
.stream-status{font-size:18px;font-weight:700;min-height:1.4em;margin-top:10px}
.stream-controls{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain}
.stream-controls>button,.stream-controls select,.stream-controls input{flex:none}
.stream-controls select{min-height:56px;min-width:96px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);font-weight:600}
.stream-controls input[type=range]{width:120px;accent-color:var(--green)}
@media(max-width:580px){.stream-view{padding:12px}.stream-form{flex-wrap:wrap}.stream-form input{flex-basis:100%}}

/* Desktop selectors do not wrap/reparent the thread or its native forms. */
.session-title-search{flex:none;padding:8px 23px;border-bottom:1px solid var(--line)}
.session-title-search input,.choice-search{width:100%;min-width:0;min-height:48px;padding:10px 12px;border:1px solid var(--field-line);border-radius:9px;background:var(--field);color:var(--ink)}
.footer .typed-compose .primary{min-width:48px}
@media(min-width:761px){
  [data-desktop-mode=on] .footer:is(.chat-footer,.session-compose){min-height:65px;padding-top:8px;padding-bottom:8px}
}
.choice-pane{display:none}
@media(min-width:1100px){
  [data-desktop-mode=on] .workspace.with-choice-pane{position:relative;padding-left:280px}
  [data-desktop-mode=on] .workspace.choice-collapsed{padding-left:64px}
  [data-desktop-mode=on] .choice-pane{position:absolute;inset:0 auto 0 0;width:280px;display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line);background:var(--paper)}
  .choice-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px;min-height:65px;border-bottom:1px solid var(--line)}
  .choice-title{padding-left:8px;font-size:18px}
  .choice-toggle{width:48px;height:48px;padding:10px;flex:none}
  .choice-content{display:flex;flex:1;min-height:0;flex-direction:column;padding:8px;gap:8px}
  .choice-search{flex:none;font-size:15px}
  .choice-list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
  .choice-row{display:block;width:100%;min-height:56px;text-align:left;overflow-wrap:anywhere;font-size:16px;font-weight:400;border:0;border-radius:8px;padding:12px;margin-bottom:4px}
  .choice-row[aria-current=true]{background:var(--pale);color:var(--green);font-weight:700;box-shadow:inset 3px 0 var(--green)}
  .choice-footer{flex:none;display:flex;gap:5px;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:8px}
  .choice-footer span{font-size:13px;white-space:nowrap}
  .choice-footer button{width:48px;min-height:48px;padding:8px;font-size:inherit}
  .choice-status{flex:none;font-size:14px;color:var(--muted);overflow-wrap:anywhere}
  .choice-status:empty{display:none}
  .choice-collapsed .choice-pane{width:64px}
  .choice-collapsed :is(.choice-title,.choice-content){display:none}
}
@media(max-width:580px){.session-title-search{padding:8px 12px}}
.choice-search-row{display:flex;gap:8px;align-items:center;flex:none}
.choice-search-row .choice-search{flex:1;min-width:0;width:0}
#choice-new-session{width:48px;height:48px;flex:none;padding:10px}
.choice-create-status{font-size:14px;color:var(--muted);overflow-wrap:anywhere;margin:0}
.unread-divider{display:flex;align-items:center;gap:14px;margin:18px 0;color:var(--muted);font-size:13px;font-weight:600}
.unread-divider::before,.unread-divider::after{content:'';height:1px;background:var(--line);flex:1}
.session-display{flex-wrap:wrap;justify-content:flex-end;max-width:360px}
.session-diagnostic-text{border-left:2px solid var(--line);padding:8px 12px;color:var(--muted);font-size:14px}
.session-diagnostic-text pre{white-space:pre-wrap;overflow-wrap:anywhere}
.detail-truncated{display:block;margin-top:6px;color:var(--muted)}
.session-thread [data-presentation] .bubble{font-size:14px;background:var(--paper);border:1px solid var(--line);color:var(--muted)}
@media(max-width:580px){.session-display{max-width:180px}}

/* Attachments share the session footer in both modes. Only Model is right of
   Send; neither upload nor a polling update remounts/focuses the text editor. */
.footer.session-compose:not(.is-recording):has(.typed-compose){display:grid;grid-template-columns:48px 48px 48px minmax(48px,1fr) 48px auto 48px;grid-auto-flow:row dense;align-items:start;overflow-x:auto}
.session-compose:not(.is-recording):has(.typed-compose) .typed-compose,.session-compose:has(.typed-compose) .session-setting-controls{display:contents}
.session-compose #session-mic{grid-column:1}.session-compose #session-read{grid-column:2}.session-compose #session-attach{grid-column:3}
.session-compose #typed-text{grid-column:4}.session-compose #typed-discard,.session-compose #session-cancel-turn{grid-column:5}.session-compose #typed-send{grid-column:6}.session-compose #session-model{grid-column:7}
.session-compose .read-playback-controls{grid-column:1/-1;justify-self:start}
.session-compose.is-recording #session-attach,.session-compose.is-recording .session-attachments{display:none}
.session-attachments{grid-column:1/-1;min-width:0;max-height:180px;overflow:auto;overscroll-behavior:contain}
.session-attachment-list{display:flex;gap:8px;overflow-x:auto;padding:2px}
.session-attachment{display:flex;align-items:flex-start;gap:8px;flex:0 0 min(330px,100%);min-width:0;padding:6px;border:1px solid var(--line);border-radius:9px;background:var(--paper)}
.session-attachment img{width:64px;height:48px;object-fit:contain;flex:none;border-radius:5px}
.session-attachment img:not([src]){display:none}
.session-attachment-copy{flex:1;min-width:0;overflow-wrap:anywhere;font-size:13px}
.session-attachment-copy strong,.session-attachment-copy small{display:block}
.session-attachment-copy small{color:var(--muted)}
.session-attachment pre{max-height:64px;overflow:auto;white-space:pre-wrap;font:12px/1.4 var(--font);margin:6px 0 0}
.session-attachment-status{font-size:12px;line-height:1.4;color:var(--muted);margin:4px 2px 0;overflow-wrap:anywhere}
.session-attachment[data-state=error]{border-color:var(--danger)}
@media(max-width:760px){
  .footer.session-compose:not(.is-recording):has(.typed-compose){grid-template-columns:48px 48px 48px minmax(48px,1fr) auto 48px;gap:5px;padding-left:8px;padding-right:8px}
  .session-compose #typed-text{grid-column:1/-1;order:-1}
  .session-compose .session-attachments{order:-2;max-height:160px}
  .session-compose #typed-discard,.session-compose #session-cancel-turn{grid-column:4;justify-self:end}.session-compose #typed-send{grid-column:5}.session-compose #session-model{grid-column:6}
}
@media(max-width:580px){
  .footer.session-compose:not(.is-recording):has(.typed-compose){gap:4px}
  .session-compose #typed-send{width:48px;padding:10px}
  .session-compose #typed-send span{display:none}
}

/* Android/app surface only. One header and one input row; keep the shared
   thread, native forms, drafts and actions, without changing Cockpit/Tesla. */
:root[data-shell=sessions] .app{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
:root[data-shell=sessions] .rail{display:none}
:root[data-shell=sessions] .workspace>.header{position:relative;z-index:3;min-height:56px;padding:4px 8px;gap:4px;flex-wrap:nowrap;background:var(--paper)}
:root[data-shell=sessions] .header .back{width:48px;min-width:48px;height:48px;padding:12px;border:0;background:transparent;border-radius:50%}
:root[data-shell=sessions] .header .back span{display:none}
:root[data-shell=sessions] .header h1{font-size:18px;letter-spacing:0}
:root[data-shell=sessions] .header :is(.app-header-read,.app-new-chat,.list-reload){flex:none;width:48px;min-height:48px;padding:12px;border:0;border-radius:50%;background:transparent}
:root[data-shell=sessions] .header .action-icon svg{width:24px;height:24px}
:root[data-shell=sessions] .app-menu{position:relative;flex:none}
:root[data-shell=sessions] .app-menu>summary{display:flex;align-items:center;justify-content:center;width:48px;height:48px;list-style:none;border-radius:50%;font-size:30px;line-height:1;cursor:pointer;touch-action:manipulation}
:root[data-shell=sessions] .app-menu>summary::-webkit-details-marker{display:none}
:root[data-shell=sessions] .app-menu:not([open]) .app-menu-panel{display:none}
:root[data-shell=sessions] .app-menu>summary:hover{background:var(--pale)}
:root[data-shell=sessions] .app-menu>summary:focus-visible{outline:3px solid var(--focus);outline-offset:0}
:root[data-shell=sessions] .app-menu-panel{position:absolute;z-index:20;top:100%;right:0;width:260px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 80px);overflow:auto;display:flex;flex-direction:column;padding:4px;border:1px solid var(--line);border-radius:var(--r-menu);background:var(--elevated);box-shadow:var(--shadow-2)}
:root[data-shell=sessions] .app-menu-panel>button{flex:none;width:100%;min-height:48px;padding:10px 12px;border:0;background:transparent;justify-content:flex-start;text-align:left;font-size:15px}
:root[data-shell=sessions] .app-menu-panel>button:hover{background:var(--pale)}
:root[data-shell=sessions] .app-menu-panel #session-model::after{content:attr(data-app-label)}
:root[data-shell=sessions] .app-menu-panel .session-display{max-width:none;flex-direction:row;flex-wrap:nowrap;justify-content:stretch;padding:4px;gap:4px;border-bottom:1px solid var(--line)}
:root[data-shell=sessions] .app-menu-panel .session-display button{flex:1;min-height:48px;min-width:0;font-size:14px}
:root[data-shell=sessions] .workspace:has(.session-compose.is-recording) :is(.app-header-read,.app-menu){visibility:hidden}
:root[data-shell=sessions] .thread{padding:12px 10px}
:root[data-shell=sessions] .message{margin-bottom:10px}
:root[data-shell=sessions] .meta{gap:6px;margin-bottom:3px;font-size:12px}
:root[data-shell=sessions] .bubble{padding:8px 11px;line-height:1.4;border-radius:4px 13px 13px}
:root[data-shell=sessions]:not([data-text-size=large]) .bubble{font-size:16px}
:root[data-shell=sessions] .own .bubble{border-radius:13px 4px 13px 13px;max-width:90%}
:root[data-shell=sessions] .message-read{width:48px;height:48px;padding:12px}
:root[data-shell=sessions] .workspace>.footer.session-compose{min-height:60px;padding:6px 8px;gap:6px;background:var(--footer)}
:root[data-shell=sessions] .footer.session-compose:not(.is-recording):has(.typed-compose){display:grid;grid-template-columns:48px minmax(0,1fr) 48px;grid-auto-flow:row dense;align-items:end;overflow:visible}
:root[data-shell=sessions] .session-compose #typed-text{grid-column:2;order:0;min-height:48px;width:100%;padding:11px 15px;border-radius:24px;background:var(--field);border-color:var(--line)}
:root[data-shell=sessions] .typed-compose textarea{font-size:16px}
:root[data-shell=sessions] .session-compose #session-attach{grid-column:1;order:0}
:root[data-shell=sessions] .session-compose :is(#session-mic,#typed-send,#session-cancel-turn){grid-column:3;order:0}
:root[data-shell=sessions] .session-compose :is(#session-attach,#session-mic,#typed-send,#session-cancel-turn){width:48px;height:48px;min-height:48px;min-width:48px;padding:12px;border-radius:50%;flex:none}
:root[data-shell=sessions] .session-compose #session-attach{border-color:transparent;background:transparent}
:root[data-shell=sessions] .session-compose :is(#session-mic,#typed-send){background:var(--primary);color:var(--on-primary);border-color:var(--primary)}
:root[data-shell=sessions] .session-compose #typed-discard,:root[data-shell=sessions] .session-compose .session-setting-controls{display:none}
:root[data-shell=sessions] .session-compose:not(.has-draft):not(.is-recording) #typed-send,:root[data-shell=sessions] .session-compose.has-draft:not(.is-recording) #session-mic{display:none}
:root[data-shell=sessions] .session-compose:has(#session-cancel-turn:not([hidden])):not(.is-recording) :is(#session-mic,#typed-send){display:none}
:root[data-shell=sessions] .session-compose .session-attachments{grid-column:1/-1;order:-1;max-height:160px}
:root[data-shell=sessions] .session-compose .read-playback-controls{grid-column:1/-1;order:2;justify-self:start}
:root[data-shell=sessions] .session-title-search{padding:6px 12px}
:root[data-shell=sessions] .session-title-search input{border-radius:24px;background:var(--field);border-color:var(--line)}
:root[data-shell=sessions] .chat{min-height:72px;padding:10px 8px;gap:12px}
:root[data-shell=sessions] .list{padding:4px 8px}
:root[data-shell=sessions] .workspace>.list-footer{min-height:56px;padding:4px 12px;font-size:12px}
:root[data-shell=sessions] #notice{left:12px}
/* Per-chat notification bell beside the chat name (Android app shell). */
.session-title-row{display:flex;align-items:center;gap:0;flex:1 1 160px;min-width:0}
.session-heading .session-title-row>h1{flex:0 1 auto;min-width:0}
:root[data-shell=sessions] #workspace #session-notify{flex:none;width:40px;min-width:40px;height:40px;min-height:40px;margin:-4px 0 -4px 2px;padding:9px;border:0;border-radius:50%;background:transparent;color:var(--muted);transition:color .2s ease,background-color .2s ease,opacity .2s ease}
:root[data-shell=sessions] #workspace #session-notify[aria-pressed=true]{border:0;background:transparent;color:var(--green)}
@media(hover:hover){:root[data-shell=sessions] #workspace #session-notify:hover:not(:disabled){background:var(--pale)}}
@media(hover:none){:root[data-shell=sessions] #workspace #session-notify:hover{background:transparent}}
:root[data-shell=sessions] #workspace #session-notify[aria-busy=true]{opacity:.5}
:root[data-shell=sessions] #workspace #session-notify svg{width:22px;height:22px}
:root[data-shell=sessions] #workspace #session-notify.is-ringing svg{animation:session-bell-ring .7s ease-in-out;transform-origin:50% 10%}
@keyframes session-bell-ring{0%,100%{transform:rotate(0)}15%{transform:rotate(14deg)}30%{transform:rotate(-12deg)}45%{transform:rotate(8deg)}60%{transform:rotate(-5deg)}75%{transform:rotate(2deg)}}
@media(prefers-reduced-motion:reduce){:root[data-shell=sessions] #workspace #session-notify.is-ringing svg{animation:none}}
:root:not([data-shell=sessions]) #workspace #session-notify{flex:none;width:48px;min-width:48px;height:48px;min-height:48px;margin:-8px 0 -8px 2px;padding:13px;border:0;border-radius:50%;background:transparent;color:var(--muted);transition:color .2s ease}
:root:not([data-shell=sessions]) #workspace #session-notify[aria-pressed=true]{border:0;background:transparent;color:var(--green)}
@media(hover:hover){:root:not([data-shell=sessions]) #workspace #session-notify:hover:not(:disabled){background:var(--pale)}}
:root:not([data-shell=sessions]) #workspace #session-notify[aria-busy=true]{opacity:.5}
:root:not([data-shell=sessions]) #workspace #session-notify svg{width:22px;height:22px}
:root:not([data-shell=sessions]) #workspace #session-notify.is-ringing svg{animation:session-bell-ring .7s ease-in-out;transform-origin:50% 10%}
@media(prefers-reduced-motion:reduce){:root:not([data-shell=sessions]) #workspace #session-notify.is-ringing svg{animation:none}}
.session-fast{flex:none;display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:2px 9px 2px 7px;border-radius:999px;background:var(--warning-fill);color:var(--ink);font-size:13px;font-weight:600;line-height:20px;white-space:nowrap}
.session-fast svg{flex:none;width:16px;height:16px}
@media(max-width:580px){.session-fast{padding:4px}.session-fast-label{display:none}#workspace .session-title-row>h1{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:break-word;hyphens:auto;font-size:17px;line-height:1.2}
  /* Phone web shell: Kompakt|Details gets its own row under the title instead of
     squeezing the title to a few letters (the Android shell keeps it in the menu). */
  :root:not([data-shell=sessions]) .header:has(>.session-display){flex-wrap:wrap;row-gap:6px}
  :root:not([data-shell=sessions]) .header>.session-heading{flex:1 1 calc(100% - 58px)}
  :root:not([data-shell=sessions]) .header>.session-display.segmented{margin-left:58px}
  /* The work counter gets its own line under the title, without a row gap: it
     never squeezes the title, and a two-line title (e.g. beside the desktop bell)
     plus the counter still fits the 80 px header. The counter appearing never
     resizes the header: where the header has no room to spare (compact 64 px)
     or grows with its content (Kompakt|Details row), the title keeps one line
     while the counter shows (the full title stays the heading text and title),
     and the Details-row heading always reserves two title lines, which hold
     either a two-line title or one line plus the counter. A 16 px counter line
     under the desktop bell's 32 px row stays within the 48 px Back row. */
  :root:not([data-shell=sessions]) .header>.session-heading{row-gap:0}
  :root:not([data-shell=sessions]) .header>.session-heading>.session-work{flex-basis:100%;line-height:16px}
  :root:not([data-shell=sessions]) .header:has(>.session-display:not([hidden]))>.session-heading{min-height:calc(17px * 1.2 * 2);align-content:flex-start}
  :root:not([data-shell=sessions]):is([data-spacing=compact],:has(#workspace>.header>.session-display:not([hidden]))) #workspace .session-heading:has(>.session-work:not([hidden])) .session-title-row>h1{-webkit-line-clamp:1}}
.choice-pane .choice-row{display:flex;align-items:center;gap:8px}
.choice-row-title{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.choice-row-meta{flex:none;display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:400;line-height:16px;color:var(--muted)}
.choice-row-meta .unread{margin-left:0;vertical-align:0}
.desktop-hint{flex:1 1 auto;min-width:0;display:flex;align-items:center;justify-content:flex-end;gap:8px}
.desktop-hint-text{color:var(--muted);font-size:14px;white-space:nowrap}
.desktop-hint #desktop-hint-dismiss{border-color:transparent;background:transparent;color:var(--muted)}
.skip-link:not(:focus){position:absolute!important;width:1px;height:1px;min-width:0;min-height:0;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link:focus{position:fixed;top:8px;left:72px;z-index:30;background:var(--paper);box-shadow:0 2px 10px rgba(0,0,0,.18)}
.message-copy{flex:none;width:48px;height:48px;padding:12px;color:var(--muted);border-color:transparent;background:transparent}
:root:not([data-desktop-mode=on]) .message-copy,:root[data-shell=sessions] .message-copy{display:none}
html.is-dropping-files #session-thread{outline:2px dashed var(--green);outline-offset:-6px}
.browser-notify-offer{order:4;flex-basis:100%;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:10px 12px;border-radius:10px;background:var(--surface-2)}
.browser-notify-offer p{margin:0}
.browser-notify-actions{display:flex;flex-wrap:wrap;gap:8px}
/* Slash-command list: overlays the thread, anchored right above the composer. */
.session-command-anchor{position:relative;flex:none;height:0;z-index:2}
.session-command-menu{position:absolute;bottom:6px;left:8px;width:calc(100% - 16px);max-height:min(60vh,440px);overflow-y:auto;overscroll-behavior:contain;padding:4px;border:1px solid var(--line);border-radius:var(--r-menu);background:var(--elevated);color:var(--ink);box-shadow:var(--shadow-2)}
.session-command-option{display:flex;flex-wrap:wrap;align-items:baseline;align-content:center;column-gap:14px;row-gap:2px;min-height:48px;padding:7px 12px;border-radius:8px;cursor:pointer;line-height:1.35;-webkit-tap-highlight-color:transparent}
.session-command-option:hover{background:var(--bg)}
.session-command-option[aria-selected=true]{background:var(--pale);box-shadow:inset 3px 0 0 var(--green)}
.session-command-usage{flex:0 0 auto;min-width:11.5em;font-size:16px;white-space:nowrap}
.session-command-hint{color:var(--muted)}
.session-command-description{flex:1 1 16em;min-width:0;color:var(--muted);font-size:14px;overflow-wrap:anywhere}
@media(forced-colors:active){.session-command-option[aria-selected=true]{outline:2px solid Highlight;outline-offset:-2px}}

/* HIG pass §1.5/1.6: elevation, press feedback, motion and system preferences.
   Opacity-only entrance so no measured geometry moves while a surface opens. */
:root{--dur-1:120ms;--dur-2:180ms;--dur-3:260ms;--ease:cubic-bezier(.2,0,0,1)}
@media(min-width:581px) and (max-width:780px){:root{--inset:16px}}
@media(max-width:580px){:root{--inset:12px}}
:root[data-shell=sessions]{--inset:16px}
.home-card{box-shadow:var(--shadow-1)}
@media(hover:hover){:is(button,.button,.chat,.home-row,.choice-row,.session-command-option):hover{transition:background-color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}}
button:not(:disabled):not(.primary):active,.button:active{background:var(--fill-pressed)}
button.primary:not(:disabled):active{background:var(--primary-hover);border-color:var(--primary-hover)}
.rail button:not(:disabled):active{background:var(--rail-hover)}
.image-viewer-toolbar button:not(:disabled):active{filter:brightness(1.25)}
.app-menu[open] .app-menu-panel,.session-command-menu,dialog[open]{animation:pop-in var(--dur-2) var(--ease)}
@keyframes pop-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){:root{--dur-1:1ms;--dur-2:1ms;--dur-3:1ms}}
@media(prefers-contrast:more){
  :root:root:root{--muted:var(--ink);--line:var(--field-line)}
  :is(.bubble,.native-request,.session-chooser,.attachment,.home-card,.app-menu-panel,.session-command-menu){outline:1px solid var(--field-line)}
}
@media(forced-colors:active){
  :is(.bubble,.home-card,.session-chooser,.contact-voice-dialog,.app-menu-panel,.session-command-menu,.markdown pre,.segmented,.settings-group,.native-request,.turn-output){border:1px solid CanvasText}
  :is(button[aria-pressed=true],.rail button[aria-current=page],.choice-row[aria-current=true],.session-command-option[aria-selected=true]){forced-color-adjust:none;background:Highlight;color:HighlightText;border-color:Highlight}
  :is(button[aria-pressed=true],.rail button[aria-current=page],.choice-row[aria-current=true]) svg{color:HighlightText}
  button.primary{border:2px solid ButtonText}
  input.switch{appearance:auto;width:24px;height:24px}
  :focus-visible{outline:3px solid Highlight!important}
}
/* HIG pass §1.2: one mono stack for code. */
code,pre,kbd,samp{font-family:var(--font-mono)}
/* HIG pass §2.9 rail: current item gets a shape cue and contrast, not hue alone (A3). */
.rail button[aria-current=page]::before{content:"";position:absolute;left:-8px;top:12px;bottom:12px;width:3px;border-radius:0 3px 3px 0;background:var(--lime)}
.rail button:focus-visible{outline-color:var(--lime)}
@media(min-width:781px){.header{min-height:72px;padding-left:var(--inset);padding-right:var(--inset)}}
/* §2.3 one segmented control: track, equal segments, raised selection (H2).
   Selection is never colour-only: border, weight and shadow; Highlight under forced colours. */
.segmented{display:inline-grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;padding:2px;border-radius:var(--r-control);background:var(--surface-2);border:1px solid var(--line)}
.segmented>button{min-height:44px;min-width:0;border:1px solid transparent;border-radius:var(--r-segment);background:transparent;color:var(--muted);font-weight:500;padding:8px 14px;box-shadow:none}
.segmented>button[aria-pressed=true]{background:var(--segment-on);border:1px solid var(--control-line);color:var(--ink);font-weight:650;box-shadow:var(--shadow-1)}
@media(hover:hover){.segmented>button:hover:not(:disabled):not([aria-pressed=true]){background:transparent;color:var(--ink)}}
.segmented>button:not(:disabled):not([aria-pressed=true]):active{background:var(--fill-pressed)}
:root[data-dashboard] .segmented>button{min-height:48px}
.session-display.segmented{flex:none;align-self:center}
.session-fast-choices.segmented{display:grid;grid-auto-flow:row;grid-template-columns:repeat(auto-fit,minmax(88px,1fr))}
.gmail-top .session-settings .segmented{min-width:min(100%,320px)}
/* HIG pass §2.6 session settings pop-out: captioned inset groups, each owning
   its single commit; Hermes maintenance last; neutral disabled primary (P2-3). */
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
button.primary:disabled{opacity:1;background:var(--surface-2);border-color:var(--line);color:var(--muted)}
:root[data-shell=sessions] .session-compose :is(#session-mic,#typed-send):disabled{opacity:.45}
.unified-settings .settings-heading{padding:14px 22px 12px}
.unified-settings .settings-heading h2{font-size:var(--t-title2);line-height:1.3;letter-spacing:-.2px}
.settings-subtitle{margin-top:2px;font-size:var(--t-footnote);line-height:18px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.unified-settings .settings-body{padding:16px 22px 0;background:var(--grouped);scroll-padding:12px 0}
.settings-group,.settings-group.session-notifications,.settings-group.settings-section{margin:0 0 16px;padding:4px 16px 12px;border:1px solid var(--line);border-radius:12px;background:var(--group-bg)}
.settings-group .settings-caption{margin:10px 0 8px;font-size:var(--t-footnote);line-height:18px;font-weight:600;letter-spacing:0;color:var(--muted)}
.settings-group .settings-title{margin:0;padding:0;border:0}
:root[data-dashboard] .unified-settings .display-field label{font-size:var(--t-subhead);font-weight:500;color:var(--ink)}
:root[data-dashboard][data-text-size=large] .unified-settings .display-field label{font-size:17px}
.unified-settings .session-chooser-content{margin:4px 0 0}
.unified-settings .session-chooser-content>button{grid-column:1/-1;justify-self:end;min-width:200px}
.unified-settings .session-chooser-content>.session-chooser-note{order:1}
.unified-settings .session-chooser-content>button.primary{order:2}
.unified-settings .session-chooser-content>.settings-confirm{grid-column:1/-1;order:3;display:flex;flex-direction:column;gap:12px}
.settings-confirm-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px}
.settings-confirm-actions>button{min-height:48px}
.settings-callout{display:flex;gap:10px;align-items:flex-start;padding:12px;border-radius:10px;background:var(--warning-fill);color:var(--ink);overflow-wrap:anywhere}
.settings-callout>svg{flex:none;width:20px;height:20px;margin-top:1px;color:var(--warning)}
.settings-group .session-fast-mode{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
.settings-group .session-fast-mode h4{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:var(--t-subhead);font-weight:500}
.settings-group .session-fast-mode h4>svg{width:18px;height:18px;color:var(--green)}
.session-fast-mode .settings-callout{margin-top:8px;font-size:var(--t-footnote)}
.settings-group.session-notifications .session-notification-label{justify-content:space-between;gap:16px;min-height:56px;font-size:var(--t-subhead)}
.session-notification-text{flex:1;min-width:0}
.settings-group.session-notifications #session-notifications-status{margin:0 0 4px;font-size:var(--t-footnote);color:var(--muted)}
.settings-group .browser-notify{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 16px;margin-top:8px;padding-top:12px;border-top:1px solid var(--line)}
.settings-group .browser-notify-title{flex:1 1 60%;font-size:var(--t-subhead);font-weight:500}
.settings-group .browser-notify-status{order:3;flex-basis:100%;font-size:var(--t-footnote)}
.settings-group .browser-notify>button{order:2;flex:none}
/* §2.2 switch: native checkbox, switch styling; label row is the hit target. */
input.switch{appearance:none;-webkit-appearance:none;flex:none;width:51px;height:31px;min-height:31px;margin:0;padding:0;border-radius:999px;background:var(--switch-off);border:1px solid var(--control-line);position:relative;cursor:pointer;transition:background-color var(--dur-1) var(--ease)}
input.switch::before{content:"";position:absolute;top:2px;left:2px;width:25px;height:25px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgb(0 0 0/.3);transition:transform var(--dur-2) var(--ease)}
input.switch:checked{background:var(--primary);border-color:var(--primary)}
input.switch:checked::before{transform:translateX(20px)}
input.switch:disabled{opacity:.5;cursor:default}
input.switch:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
/* Hermes maintenance: caret disclosure, warning note, bordered danger actions. */
.settings-group.settings-section>summary{display:block;list-style:none;padding:16px 0}
.settings-group.settings-section>summary::-webkit-details-marker{display:none}
.settings-group.settings-section>summary>svg{width:18px;height:18px;margin-right:8px;vertical-align:-3px;transition:transform var(--dur-2) var(--ease)}
.settings-group.settings-section[open]>summary>svg{transform:rotate(90deg)}
.settings-section .settings-callout{margin:0 0 12px;font-size:var(--t-footnote)}
.settings-section #management-result:not(:empty){border-top:1px solid var(--line)}
.unified-settings .settings-footer{background:var(--elevated)}
@media(max-width:580px){
  .session-chooser.unified-settings{width:100%;max-width:100%;max-height:92dvh;margin:auto 0 0;border-width:1px 0 0;border-radius:16px 16px 0 0}
  .unified-settings .settings-body{padding:12px 12px 0}
  .settings-group,.settings-group.session-notifications,.settings-group.settings-section{padding:4px 12px 12px}
  .unified-settings .session-chooser-content>button{min-width:0;justify-self:stretch}
  .settings-confirm-actions>button{flex:1 1 100%}
  .settings-group .browser-notify>button{flex:1 1 100%}
  .unified-settings .settings-footer{padding-bottom:calc(8px + env(safe-area-inset-bottom))}
}
@media(forced-colors:active){input.switch{appearance:auto;-webkit-appearance:auto;width:24px;height:24px;min-height:24px;border:0;background:none}input.switch::before{display:none}}
/* HIG pass §2.1 button roles: plain and tinted. */
button.plain{background:transparent;border-color:transparent;color:var(--green)}
button.tinted{background:var(--pale);border-color:var(--green);color:var(--green)}
button.tinted:disabled{opacity:1;background:var(--surface-2);border-color:var(--line);color:var(--muted)}
/* §2.7 menus: anchored, no dim, grouped by separators, every row with an icon, destructive last. */
.menu-separator{flex:none;height:1px;margin:6px 4px;background:var(--line)}
:root[data-shell=sessions] .app-menu>summary>svg{width:24px;height:24px}
:root[data-shell=sessions] .app-menu-panel{width:280px;padding:6px;gap:0}
:root[data-shell=sessions] .app-menu-panel>button{gap:12px;min-height:48px;padding:10px 12px;border-radius:8px;font-size:var(--t-subhead);font-weight:500}
:root[data-shell=sessions] .app-menu-panel>button>svg{width:22px;height:22px}
:root[data-shell=sessions] .app-menu-panel>button.danger{color:var(--danger)}
@media(hover:hover){:root[data-shell=sessions] .app-menu-panel>button:hover:not(:disabled){background:var(--surface-2)}}
:root[data-shell=sessions] .app-menu-panel>button:not(:disabled):active{background:var(--fill-pressed)}
:root[data-shell=sessions] .app-menu-panel .session-display.segmented{display:grid;width:100%;padding:2px;gap:2px;border:1px solid var(--line);border-radius:var(--r-control)}
:root[data-shell=sessions] .app-menu-panel .session-display.segmented button{min-height:44px;font-size:14px}
.contact-voice-dialog.is-menu{position:fixed;margin:0;inset:var(--menu-top,72px) auto auto var(--menu-left,8px);width:280px;max-width:calc(100vw - 16px);max-height:calc(100dvh - var(--menu-top,72px) - 8px);padding:6px;border-radius:var(--r-menu);box-shadow:var(--shadow-2)}
.contact-voice-dialog.is-menu::backdrop{background:transparent}
.contact-voice-dialog.is-menu .contact-voice-content{margin:0;gap:0}
.contact-voice-dialog.is-menu .contact-voice-content>button{justify-content:flex-start;gap:12px;min-height:48px;padding:10px 12px;border:0;border-radius:8px;background:transparent;font-size:var(--t-subhead);font-weight:500}
.contact-voice-dialog.is-menu .contact-voice-content>button>svg{width:22px;height:22px}
@media(hover:hover){.contact-voice-dialog.is-menu button:hover:not(:disabled){background:var(--surface-2)}}
.contact-voice-actions{justify-content:flex-end}
.contact-voice-dialog:not(.is-menu) .contact-voice-actions button{flex:0 1 auto;min-width:120px}
/* Lane U1 Tesla/voice usability: confirmation, offline pill, approval strip,
   recording state, labelled footer actions and larger driving status. */
.confirm-dialog{width:min(420px,calc(100% - 28px));padding:22px;border:1px solid var(--line);border-radius:var(--r-sheet);color:var(--ink);background:var(--elevated);box-shadow:var(--shadow-3)}
.confirm-dialog::backdrop{background:var(--scrim)}
.confirm-dialog h2{margin:0 0 8px;font-size:var(--t-title2);line-height:1.3}
.confirm-dialog p{margin:0;color:var(--muted)}
.confirm-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:22px}
.confirm-actions button{min-width:120px}
.confirm-actions .danger{background:var(--danger);border-color:var(--danger);color:var(--paper)}
/* #7 stable footer slots: mic · read · Auftrag abbrechen stay put; rare controls
   (Auto starten, +) sit right of a spacer; #14 labelled cancel/discard. */
.footer.session-compose .footer-spacer{flex:1 1 0;min-width:0}
/* The spacer only pushes the trailing controls right: in a full idle row (360 px with a running turn) it must not cost a second 8 px gap. */
.footer.session-compose:not(.is-capturing) .footer-spacer{margin-left:-8px}
.session-compose:has(.typed-compose) .footer-spacer{display:none}
.labelled-action{gap:6px;padding:10px 14px;white-space:nowrap}
.labelled-action>svg{width:20px;height:20px;flex:none}
.turn-cancel{color:var(--danger);border-color:var(--danger)}
:root[data-shell=sessions] .labelled-action>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.footer.session-compose:not(.is-recording):has(.typed-compose){grid-template-columns:48px 48px 48px minmax(48px,1fr) 48px auto auto 48px}
.session-compose #session-cancel-turn{grid-column:6}.session-compose #typed-send{grid-column:7}.session-compose #session-model{grid-column:8}
@media(max-width:760px){
  .footer.session-compose:not(.is-recording):has(.typed-compose){grid-template-columns:48px 48px 48px minmax(48px,1fr) auto auto 48px}
  .session-compose #typed-discard{grid-column:4}.session-compose #session-cancel-turn{grid-column:5;justify-self:end}.session-compose #typed-send{grid-column:6}.session-compose #session-model{grid-column:7}
}
/* The one-row desktop composer (above 760 px) beside the 64 px rail: up to 900 px
   the word „Auftrag abbrechen“ would squeeze the text field to 48 px and the
   autosized field would grow the footer, so the labelled actions keep only their
   glyph there (accessible names unchanged), as at 760 px and below. */
@media(max-width:900px){
  .session-compose:has(.typed-compose) .labelled-action>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .session-compose:has(.typed-compose) .labelled-action{padding:10px}
}
/* #8 recording at a glance: signal-coloured stop with a live level ring, plus
   „Hört zu …“ in the footer itself (the thread status can scroll away). */
.session-compose.is-recording #session-mic,#direct-stop,#finish-recording{background:var(--danger);border-color:var(--danger);color:var(--paper);box-shadow:0 0 0 calc(2px + var(--level,0) * 10px) color-mix(in srgb,var(--danger) 30%,transparent);transition:box-shadow 90ms linear}
.capture-chip{flex:none;align-self:center;margin:0 4px;font-size:18px;font-weight:600;line-height:1.3;color:var(--danger);white-space:nowrap}
.capture-chip[hidden]{display:none}
.capture-chip::before{content:"";display:inline-block;width:10px;height:10px;margin-right:8px;border-radius:50%;background:currentColor;vertical-align:1px;animation:capture-pulse 1.2s ease-in-out infinite}
@keyframes capture-pulse{50%{opacity:.35}}
@media(prefers-reduced-motion:reduce){.capture-chip::before{animation:none}.session-compose.is-recording #session-mic,#direct-stop,#finish-recording{transition:none}}
/* Capture row (round-3 merge of U1 + Q): while a capture records or transcribes,
   the chip gets its own line at the top of the footer, so the control row keeps
   one 48 px height and fits phones without horizontal scrolling; labelled
   actions keep their natural width beside the 48 px icons. Disabled extras
   (+, settings, Auto starten) leave the row meanwhile. During a queued
   dictation „Auftrag abbrechen“ (same stop glyph) is not placed next to the red
   Stop; it returns as soon as the recording ends. */
.footer.session-compose.is-capturing{flex-wrap:wrap;row-gap:6px}
.session-compose.is-capturing>.capture-chip{order:-1;flex:1 0 100%;grid-column:1/-1;margin:0}
.session-compose.is-capturing>:is(#session-attach,.session-setting-controls,#auto-read-activate),.session-compose.is-recording>#session-cancel-turn{display:none}
.session-compose.is-capturing>button.labelled-action,.recording-controls>button.labelled-action{flex:none;height:48px;min-height:48px}
/* WhatsApp capture status sits above the control row (no 33px jump). */
#workspace>.direct-audio{padding:8px 23px 6px;border-top:1px solid var(--line);background:var(--footer)}
@media(max-width:580px){#workspace>.direct-audio{padding:8px 12px 6px}}
/* #13 driving-relevant status at >=18px. */
.audio-panel>p{font-size:18px;line-height:1.35}
.turn-state{font-size:18px;font-weight:600;color:var(--ink)}
#notice{font-size:18px;line-height:1.35}
/* #2 a waiting native request is pointed out above the footer while off-screen. */
.request-jump-anchor{position:relative;height:0;z-index:4}
.request-jump{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:10px 20px;border:1px solid var(--warning);border-radius:var(--r-pill);background:var(--warning-fill);color:var(--ink);font-size:18px;font-weight:600;white-space:nowrap;box-shadow:var(--shadow-2)}
.request-jump>svg{width:20px;height:20px;color:var(--warning)}
/* #12 the rail dot is readable at a glance. */
.nav-dot{width:12px;height:12px;right:6px;top:5px;box-shadow:0 0 0 2px var(--rail)}
/* #3 a network glitch keeps the view: small pill below the header, no dimming. */
.offline-status{position:fixed;top:86px;left:calc(50% + 32px);transform:translateX(-50%);z-index:5;display:inline-flex;align-items:center;gap:8px;max-width:calc(100% - 88px);min-height:40px;margin:0;padding:8px 16px;border:1px solid var(--warning);border-radius:var(--r-pill);background:var(--elevated);color:var(--ink);font-size:16px;font-weight:600;white-space:nowrap;box-shadow:var(--shadow-2);pointer-events:none}
/* The fixed offline pill sits right under the header: move the view below it instead of covering its first line. */
html[data-offline=true] #workspace>.header+*{margin-top:48px}
.offline-status>svg{width:20px;height:20px;color:var(--warning)}
/* Phone: the capture chip wins over the discard word; the × keeps its name.
   The stop glyph and red outline keep „Auftrag abbrechen“ distinct from ×. */
@media(max-width:480px){
  .capture-discard>span,.turn-cancel>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .turn-cancel{padding:10px}
  .capture-discard{flex:0 0 48px!important;padding:10px!important}
  .capture-chip{font-size:16px}
}
/* Slash popover: two-line rows (usage above description), elevated surface. */
.session-command-menu{padding:6px}
.session-command-option{display:grid;grid-template-columns:minmax(0,1fr);row-gap:2px;align-content:center;min-height:52px;padding:8px 12px}
.session-command-usage{min-width:0;font-family:var(--font-mono);font-size:15px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.session-command-hint{font-family:var(--font);font-size:var(--t-footnote);font-weight:400;color:var(--muted)}
.session-command-description{font-size:var(--t-footnote);line-height:18px;color:var(--muted)}
@media(hover:hover){.session-command-option:hover{background:var(--surface-2)}}
.session-command-option[aria-selected=true]{background:var(--pale);box-shadow:inset 3px 0 var(--green)}
/* HIG pass §2.4 rows and home cards: content-height rows, short stamps, plain "Alle ›". */
.home-card-body{justify-content:flex-start}
.home-row{flex:none}
.home-time{width:auto;white-space:nowrap;align-self:flex-start;font-size:var(--t-footnote)}
:root[data-text-size=large] .home-time{width:auto}
.home-all.plain{gap:2px;padding:8px 6px 8px 10px;color:var(--green);font-weight:600}
.home-all.plain>svg{width:14px;height:14px}
.home-credits{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-top:2px;padding-top:6px;border-top:1px solid var(--line)}
.home-credits-label{font-size:var(--t-footnote);color:var(--muted)}
.home-credits strong{font-size:var(--t-headline);font-weight:600;font-variant-numeric:tabular-nums}
.home-quota-freshness{font-size:var(--t-footnote)}
.chat-name{font-size:var(--t-headline)}
.chat-preview{font-size:var(--t-subhead)}
.chat time{align-self:flex-start;font-size:var(--t-footnote);font-variant-numeric:tabular-nums}
.gmail-row-status{font-size:var(--t-footnote);font-variant-numeric:tabular-nums}
@media(max-width:580px){.chat-name{font-size:16px}.chat-preview{font-size:14px}.chat time{font-size:12px}}
/* HIG pass §2.8 Darstellung: inset groups on a grouped page, neutral pop-up selects. */
:root[data-dashboard] .display-settings{background:var(--grouped);scroll-padding:12px 0}
:root[data-dashboard] .display-settings .display-group{margin:0 0 16px;padding:4px 16px 16px;border:1px solid var(--line);border-radius:12px;background:var(--group-bg)}
:root[data-dashboard] .display-settings .display-group h2{margin:10px 0 10px;font-size:var(--t-footnote);line-height:18px;font-weight:600;letter-spacing:0;color:var(--muted)}
:root[data-dashboard][data-text-size=large] .display-settings .display-group h2{font-size:15px;line-height:20px}
:root[data-dashboard] .display-settings .display-field label{font-weight:500}
:root[data-dashboard] .display-settings .display-field .display-note{margin:4px 0 0;font-size:var(--t-footnote);line-height:18px}
:root[data-dashboard] .display-settings .display-maintenance{padding:16px 0 0}
:root[data-dashboard] .display-feedback:empty{display:none}
:root[data-dashboard] :is(.display-settings,.unified-settings) .display-field select{appearance:none;-webkit-appearance:none;padding-right:40px;color:var(--ink);font-weight:400;border:1px solid var(--control-line);background-color:var(--field);background-image:var(--chevron);background-repeat:no-repeat;background-position:right 12px center;background-size:16px 16px}
:root[data-dashboard] .display-settings .display-field input{background:var(--field);border:1px solid var(--control-line);font-weight:400}
.display-diagnose>summary{display:flex;align-items:center;gap:8px;min-height:48px;cursor:pointer;list-style:none}
.display-diagnose>summary::-webkit-details-marker{display:none}
.display-diagnose>summary>svg{flex:none;width:18px;height:18px;color:var(--muted);transition:transform var(--dur-2) var(--ease)}
.display-diagnose[open]>summary>svg{transform:rotate(90deg)}
:root[data-dashboard] .display-settings .display-diagnose>summary h2{margin:0}
.display-diagnose>summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
/* HIG pass §3.3 desktop: readable widths, compact back in split view, content-height home. */
[data-desktop-mode=on] .list>:is(.chat,.favorite-row),[data-desktop-mode=on] .session-title-search>input{max-width:880px}
[data-desktop-mode=on] .session-thread>*{max-width:900px;margin-left:auto;margin-right:auto}
@media(min-width:1100px){
  [data-desktop-mode=on] .workspace.with-choice-pane .header .back{min-width:48px;width:48px;padding:10px}
  [data-desktop-mode=on] .workspace.with-choice-pane .header .back span{display:none}
  [data-desktop-mode=on] .home-grid{grid-template-rows:none;grid-auto-rows:auto;align-content:start}
}
@media(hover:hover){[data-desktop-mode=on] :is(.chat,.choice-row):hover:not([aria-current=true]):not(.active){background:var(--surface-2)}}
/* §3.2 sessions shell header: 16px keyline for a leading title, one-line title. */
:root[data-shell=sessions] .workspace>.header>.identity:first-child{padding-left:8px}
:root[data-shell=sessions] .header h1{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* HIG pass §2.11 bubbles and code, §2.6b approval card, §2.12 dialogs, §2.9 admin. */
.bubble{border-radius:4px var(--r-bubble) var(--r-bubble) var(--r-bubble)}
@media(min-width:581px){.bubble{padding:12px 16px}}
.own .bubble{border-radius:var(--r-bubble) 4px var(--r-bubble) var(--r-bubble)}
.markdown pre{border-radius:var(--r-control)}
.markdown-table{scrollbar-width:thin;background:linear-gradient(90deg,var(--bubble) 30%,transparent) left center/28px 100% no-repeat local,linear-gradient(270deg,var(--bubble) 30%,transparent) right center/28px 100% no-repeat local,linear-gradient(90deg,rgb(0 0 0/.14),transparent) left center/14px 100% no-repeat scroll,linear-gradient(270deg,rgb(0 0 0/.14),transparent) right center/14px 100% no-repeat scroll}
.native-request{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);padding:16px}
.native-request h2{font-size:var(--t-headline);line-height:1.35;font-weight:600;letter-spacing:0;margin-bottom:6px}
.native-request pre{padding:10px 12px;border-radius:var(--r-control);background:var(--code);font:15px/1.45 var(--font-mono)}
.native-choices{flex-wrap:wrap}
.admin-header .brand{border-radius:50%}
.admin-card input{background:var(--field);border-color:var(--control-line)}
:root[data-dashboard] .admin-card input{background:var(--field)}
/* HIG pass review fixes: a field footnote must not lift its select out of the row;
   the phone session header keeps room for the title next to Kompakt|Details. */
:root[data-dashboard] .display-settings .display-grid{align-items:start}
@media(max-width:580px){:root:not([data-shell=sessions]) .header .session-display.segmented{max-width:150px}:root:not([data-shell=sessions]) .header .session-display.segmented>button{padding:8px 6px;font-size:13px}}
/* Forced colours: the selected segment uses the system highlight (later than the segmented rules). */
@media(forced-colors:active){.segmented>button[aria-pressed=true]{forced-color-adjust:none;background:Highlight;color:HighlightText;border-color:Highlight}}
/* #10 quick clarify answers: large buttons like approvals; #12 home unseen marks. */
.clarify-choices .clarify-choice{flex:1 1 180px;min-height:48px;font-size:18px}
.clarify-choices .clarify-other{flex:1 1 100%}
.clarify-question{margin:8px 0 0;font-weight:600}
.clarify-quick textarea[hidden],.clarify-quick button[hidden]{display:none}
/* Voice answer for a quick question: „… senden?“ with an explicit yes/no, 48px targets. */
.clarify-confirm{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px;padding:10px;border:1px solid var(--green);border-radius:8px;background:var(--pale)}
.clarify-confirm-text{flex:1 1 100%;margin:0;font-weight:700;overflow-wrap:anywhere}
.clarify-confirm button{flex:1 1 140px;min-height:48px}
.home-title.has-unseen{font-weight:800}
.home-title .unread{width:10px;height:10px;vertical-align:2px}
