/* Product layout; orb equations and rendering remain in the locked upstream renderer. */
.companion-active { overflow:hidden; }
.companion-active #rail,.companion-active .topbar,.companion-active .bottombar { display:none; }
.companion-active main#main { margin-left:0;overflow:hidden;height:var(--companion-view-height,100dvh);min-height:0;display:flex;flex-direction:column;padding-inline:var(--s-xl);padding-top:calc(env(safe-area-inset-top) + 12px);padding-bottom:16px; }
.companion-workspace.page { flex:1;min-height:0;display:flex;flex-direction:column;width:100%;max-width:1380px;gap:18px; }
.companion-topbar { display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;flex:none; }
.companion-identity { display:flex;align-items:center;gap:12px;min-width:0;flex:1; }
.companion-identity>div { min-width:0; }.companion-identity h1 { font-size:22px;line-height:1.3;letter-spacing:.02em;font-weight:650; }
.companion-identity p { font-size:12px;color:var(--on-ter);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:5px; }
.companion-avatar { flex:none;width:46px;height:46px;display:grid;place-items:center; }
.companion-avatar .companion-figure img { width:46px;height:46px;object-fit:contain; }
.companion-toolbar { display:flex;gap:4px;align-items:center;flex-wrap:wrap; }
.companion-toolbar .btn { min-width:0;padding:0 12px;min-height:44px;border-radius:16px;font-size:13px;white-space:nowrap; }
.companion-layout { flex:1;min-height:0;display:grid;grid-template-columns:230px minmax(0,1fr);gap:24px;align-items:stretch; }
.companion-sidebar { display:flex;min-height:0;overflow:auto;border:1px solid var(--outline-var);border-radius:24px;padding:20px 14px;background:color-mix(in srgb,var(--surface) 70%,var(--sc-low)); }
.companion-history-panel { display:flex;flex-direction:column;gap:14px;min-width:0;width:100%; }
dialog .companion-history-panel>h2 { display:none; }
.companion-history-search { display:flex;gap:4px;align-items:center; }.companion-history-search input { width:100%;min-width:0;border-radius:14px; }
.companion-history-search .btn { flex:none;min-width:44px; }
.companion-retention { font-size:11px;line-height:1.7; }
.companion-utilities { display:grid;gap:14px; }
.companion-utilities .companion-utility-group { display:grid;gap:2px; }
.companion-utility-group h3 { padding:0 12px 4px;margin:0;font-size:11px;font-weight:500;letter-spacing:.04em;color:var(--on-ter); }
.companion-utilities :is(.companion-utility-return,.companion-utility-group>a) { justify-content:flex-start;min-height:44px;min-width:0;padding:10px 12px;border:0;border-radius:12px;color:var(--on);text-decoration:none;line-height:1.5; }
.companion-utilities .companion-utility-return { background:var(--sc-low);color:var(--on-var); }
.companion-utility-group>a:is(:hover,:focus-visible) { background:var(--sc); }
.companion-utility-group>a:focus-visible { outline:2px solid var(--accent);outline-offset:-2px; }
.companion-conversation-tools { display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid var(--outline-var);padding-top:16px;margin-top:8px; }
.companion-history-button { display:none; }
.companion-sidebar h2 { font-size:13px; font-weight:500; color:var(--on-ter); }
.companion-history { display:grid; gap:6px; }
.companion-history-link { display:grid; gap:4px; border-radius:14px; padding:12px 14px; color:var(--on-var); }
.companion-history-link[aria-current=page] { background:var(--sc); color:var(--on); }
.companion-history-link span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.companion-history-link small { color:var(--on-ter); }
.companion-chat { min-width:0;min-height:0;display:flex;flex-direction:column;gap:10px; }
.companion-return.btn { min-width:44px;min-height:44px;padding:10px;color:var(--on); }
.companion-chat .companion-compose { width:100%;max-width:780px;margin-inline:auto; }
.companion-chat .companion-messages { width:100%;max-width:804px;margin-inline:auto; }
.companion-reading { flex:1;min-height:0;position:relative; }
.companion-viewport { height:100%;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;scroll-padding:16px;outline-offset:-3px; }
.companion-messages { min-height:100%;display:flex;flex-direction:column;gap:20px;padding:20px 8px 24px 2px; }
.companion-message { align-self:flex-start;width:fit-content;max-width:min(94%,76ch);padding:18px 22px;border-radius:24px;background:var(--sc-low);border:1px solid color-mix(in srgb,var(--outline-var) 50%,transparent); }
.companion-message.from-user { align-self:flex-end;background:var(--sc); }
.companion-latest { position:absolute;bottom:14px;right:24px;box-shadow:var(--shadow);border:1px solid var(--outline-var); }
.companion-workspace .companion-intro { width:100%;margin:auto;padding:24px 16px; }
.companion-workspace .companion-intro h2 { font-size:24px; }.companion-workspace .companion-intro p { max-width:34ch; }
.companion-ai-note { text-align:center;font-size:11px;flex:none; }
.companion-footer { flex:none;display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap; }
.companion-update-notice.btn { min-height:32px;padding:0 10px;min-width:0;border:1px solid var(--outline-var);border-radius:12px;font-size:11px; }
.companion-active .pwa-status { display:none; }
.companion-author { font-size:12px; color:var(--on-ter); margin-bottom:10px; }
.companion-mode-badge{display:inline-block;margin-left:12px;font-size:10px;padding:3px 7px;border:1px solid var(--outline-var);border-radius:5px;background:color-mix(in srgb,white 55%,var(--sc-low));color:var(--on-var)}
.companion-mode-note{line-height:1.8;padding:12px 14px;background:var(--sc-low);border-radius:10px}.companion-compose>label>select{width:100%;min-height:44px}
.companion-content { white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.9; }
.companion-content.assistant-prose { white-space:normal; }
.assistant-prose>:first-child { margin-top:0; }.assistant-prose>:last-child { margin-bottom:0; }
.assistant-prose p,.assistant-prose ul,.assistant-prose ol,.assistant-prose pre,.assistant-prose table,.assistant-prose blockquote { margin:12px 0; }
.assistant-prose h1,.assistant-prose h2,.assistant-prose h3,.assistant-prose h4,.assistant-prose h5,.assistant-prose h6 { font-size:1.08em;font-weight:650;line-height:1.6;margin:20px 0 10px; }
.assistant-prose ul,.assistant-prose ol { padding-left:1.5em; }.assistant-prose li { margin:5px 0; }.assistant-prose li p { margin:4px 0; }
.assistant-prose code { font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.9em;padding:2px 5px;background:var(--sc);border-radius:4px; }
.assistant-prose pre { overflow:auto;max-width:100%;padding:14px 16px;border:1px solid var(--outline-var);border-radius:10px;background:var(--surface);white-space:pre; }
.assistant-prose pre code { padding:0;background:transparent; }.assistant-prose blockquote { padding:4px 0 4px 16px;border-left:2px solid var(--accent);color:var(--on-var); }
.assistant-prose table { width:100%;border-collapse:collapse;table-layout:fixed;font-size:.92em; }.assistant-prose th,.assistant-prose td { padding:9px 10px;border:1px solid var(--outline-var);vertical-align:top;overflow-wrap:anywhere; }.assistant-prose th { text-align:left;background:var(--sc);font-weight:600; }
.companion-compose { flex:none;padding:14px 16px;border:1px solid var(--outline-var);border-radius:24px;background:var(--surface);box-shadow:var(--shadow),inset 0 1px 0 color-mix(in srgb,var(--surface) 90%,transparent); }
.companion-composer-controls { display:flex;align-items:center;gap:8px; }.companion-composer-controls>label { min-width:0;flex:1;max-width:230px; }.companion-composer-controls>.btn { flex:none;min-width:0;min-height:44px;padding-inline:10px; }
.companion-control-title { position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap; }
.companion-workspace .companion-composer-controls select { height:44px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;gap:6px; }
.companion-workspace .companion-composer-controls select:not(:open) option:checked { white-space:nowrap;padding:0;min-height:0; }
.companion-compose label { display:grid; gap:8px; color:var(--on-ter); font-size:12px; }
.companion-compose textarea { width:100%;resize:none;min-height:54px;max-height:116px;border:0;padding:4px 0;background:transparent;color:var(--on);font-size:16px;line-height:1.65; }
.companion-input-label { margin-top:8px;gap:4px!important; }
.companion-compose .page-actions { justify-content:flex-end;align-items:center;margin-top:8px;gap:8px; }
.companion-compose [role=status] { flex:1;min-width:0;font-size:11px;line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; }
.companion-compose .page-actions .btn { min-width:0;min-height:44px;padding-inline:16px; }
.companion-compose .companion-skill-fields:empty { display:none; }.companion-compose .companion-skill-fields { max-height:120px;overflow:auto; }
.companion-actions:empty { display:none; }
.companion-actions { display:grid; gap:12px; }
.voice-room { max-width:1040px; margin:auto; display:grid; gap:20px; text-align:center; padding:28px; border:1px solid var(--outline-var); border-radius:32px; background:color-mix(in srgb,white 55%,var(--sc-low)); box-shadow:inset 0 1px 0 #fffc,0 18px 48px -42px var(--on); }
.voice-stage { position:relative; height:330px; min-width:0; border-radius:28px; overflow:hidden; background:var(--surface); color:var(--on); container-type:inline-size; border:1px solid color-mix(in srgb,var(--outline-var) 55%,white); }
.voice-orb-reply { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:clamp(320px,44cqw,560px); max-width:calc(100% - 48px); max-height:86px; overflow:auto; padding:12px 24px; line-height:1.6; font-size:13px; color:var(--on); text-shadow:0 1px 3px #fff8; }
.voice-canvas { display:block; width:100%; height:100%; }
.voice-status { position:absolute; bottom:18px; left:16px; right:16px; font-size:14px; }
.voice-clock { color:var(--on-ter); font-size:13px; font-variant-numeric:tabular-nums; }
.voice-controls { display:flex; gap:10px; justify-content:center; flex-wrap:wrap; }
.voice-controls .btn { border-radius:999px; min-height:48px; }
.voice-caption { max-height:280px; overflow:auto; text-align:left; line-height:1.9; display:grid; gap:16px; }
.voice-caption:empty { display:none; }
.voice-caption p { display:grid; gap:4px; }
.voice-caption strong { color:var(--on-ter); font-size:12px; font-weight:500; }
.voice-caption span { white-space:pre-wrap; overflow-wrap:anywhere; }
.voice-text { display:flex; gap:12px; text-align:left; align-items:end; }
.voice-text label { flex:1; display:grid; gap:8px; color:var(--on-ter); }
.voice-text textarea { width:100%; resize:vertical; border:1px solid var(--outline-var); border-radius:16px; padding:12px; background:var(--surface); }
.voice-options { text-align:left; display:flex; flex-wrap:wrap; gap:20px; align-items:center; }
.voice-options > label { display:flex; align-items:center; gap:12px; }
.voice-options select { padding:8px 12px; border-radius:12px; border:1px solid var(--outline-var); background:var(--surface); }
.voice-consent { flex-basis:100%; display:grid; gap:12px; padding-top:16px; border-top:1px solid var(--outline-var); color:var(--on-var); font-size:13px; line-height:1.8; }
.voice-consent h2 { font-size:14px; font-weight:500; }
.voice-notice { color:var(--on-ter); font-size:13px; }
.check { display:flex; align-items:center; gap:8px; }
.companion-preferences { display:grid; gap:18px; max-width:780px; margin:20px 0; }
.companion-field { display:grid; gap:8px; }
.companion-preferences input:not([type=checkbox]), .companion-preferences select, .companion-preferences textarea, .companion-skill-fields input, .companion-compose select { background:var(--surface); border:1px solid var(--outline-var); border-radius:12px; padding:10px 12px; min-width:0; width:100%; }
.companion-skill-fields { display:grid; gap:12px; margin:12px 0; }
.companion-preferences fieldset { border:1px solid var(--outline-var); border-radius:16px; padding:16px; display:grid; gap:16px; }
.companion-schedule { display:flex; gap:20px; justify-content:space-between; flex-wrap:wrap; }
@media(max-width:1299px){
  .companion-layout { grid-template-columns:minmax(0,1fr);gap:0; }.companion-sidebar { display:none; }.companion-history-button { display:inline-flex; }
}
@media(max-width:899px){
  .companion-active main#main { padding-top:calc(var(--bar-h) + env(safe-area-inset-top) + 8px);padding-bottom:calc(var(--bottom-h) + env(safe-area-inset-bottom) + 8px); }
  .companion-workspace.page { gap:8px; }.companion-topbar { gap:4px; }.companion-identity h1 { font-size:20px; }
  .companion-toolbar { width:100%;justify-content:space-between;gap:2px;flex-wrap:nowrap; }.companion-toolbar .btn { font-size:12px;padding-inline:6px;min-width:44px;flex-shrink:1;overflow:hidden;text-overflow:ellipsis; }
  .companion-messages { gap:14px;padding-top:12px; }.companion-message { max-width:100%;padding:14px 16px;border-radius:20px; }
  .companion-compose { padding:10px 12px;border-radius:22px; }.companion-composer-controls { gap:6px; }.companion-composer-controls select { font-size:13px;padding-inline:10px; }
  .companion-ai-note { font-size:10px; }.companion-workspace .companion-intro h2 { font-size:20px; }.companion-workspace .companion-intro .companion-figure { height:112px; }
  .companion-keyboard .companion-topbar,.companion-keyboard .companion-ai-note,.companion-keyboard .bottombar { display:none; }
  .companion-active.companion-keyboard main#main { padding-bottom:8px; }
}
@media (max-width:720px) {
  .voice-room { padding:16px; border-radius:24px; }
  .voice-stage { height:270px; }
  .voice-text { align-items:stretch; flex-direction:column; }
}
@media(max-width:899px) and (max-height:520px){
  .companion-ai-note,.companion-active .bottombar { display:none; }
  .companion-active main#main { padding-bottom:8px; }
  .companion-compose { padding:8px 10px; }.companion-input-label { font-size:0!important;gap:0!important;margin-top:4px; }.companion-compose textarea { min-height:42px;max-height:60px; }
  .companion-compose .page-actions { margin-top:4px; }.companion-workspace.page { gap:4px; }
}
@media(max-width:600px) and (max-height:650px),(max-width:899px) and (max-height:520px){
  .companion-topbar .companion-identity { position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%); }
}

/* Conversation first: one header, a quiet transcript, and an anchored composer. */
.companion-topbar { flex-wrap:nowrap;gap:12px;min-height:52px; }
.companion-topbar>.companion-history-button { flex:none; }
.companion-identity h1 { font-size:18px;font-weight:600;letter-spacing:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis; }
.companion-avatar,.companion-avatar .companion-figure img { width:32px;height:32px; }
.companion-toolbar { flex:none;flex-wrap:nowrap;gap:4px;width:auto; }
.companion-icon-button { gap:8px;min-height:44px;min-width:44px;border-radius:50%;color:var(--on);background:transparent; }
.companion-icon-button svg { flex:none; }
.companion-pending { flex:none; }
.companion-pending:has(>.btn[hidden]) { display:none; }
.companion-pending>.btn { font-size:12px;min-height:36px;border:1px solid var(--outline-var);border-radius:999px;padding:4px 14px; }
.companion-chat { max-width:860px;width:100%;margin-inline:auto;gap:12px; }
.companion-messages { gap:26px;padding-inline:8px;padding-block:24px; }
.companion-message { border:0;box-shadow:none;background:transparent;border-radius:0;max-width:100%;padding:0;width:100%; }
.companion-message.from-user { width:fit-content;max-width:85%;background:var(--sc);border-radius:22px;padding:12px 18px; }
.companion-author-name,.companion-composer-controls .companion-control-title { position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap; }
.companion-author { margin:0; }
.companion-author:has(.companion-mode-badge) { margin-bottom:8px; }
.companion-mode-badge { margin-left:0;border-radius:8px; }
.companion-content { line-height:1.85;font-size:15px; }
.companion-message-tools { display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:6px; }
.companion-message-tools:empty { display:none; }
.companion-message-tools>.btn { min-width:36px;min-height:36px;padding:6px;color:var(--on-var);border-radius:10px; }
.companion-workspace .companion-message-tools .btn { color:var(--on-var);background:transparent; }
.companion-message-tools svg { width:18px;height:18px; }
.companion-message-tools .companion-message-speech { display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px;vertical-align:middle;max-width:100%;margin:0; }
.companion-message-speech .btn { color:var(--on-var);font-size:12px;min-height:36px;padding:6px; }
.companion-message-speech audio { max-width:100%; }
.companion-compose { padding:12px 12px 8px;border-radius:28px;box-shadow:0 4px 20px color-mix(in srgb,var(--on) 4%,transparent); }
.companion-input-label { margin:0;gap:0!important; }
.companion-compose textarea { min-height:34px;max-height:144px;height:34px;padding:2px 8px;line-height:1.7;font-size:16px; }
.companion-input-toolbar { display:flex;align-items:center;gap:5px;margin-top:8px; }
.companion-input-spacer { flex:1;min-width:0; }
.companion-input-toolbar .btn { min-width:44px;min-height:44px;padding:8px;border-radius:50%;flex:none; }
.companion-input-toolbar .companion-mode-chip { min-width:0;max-width:calc(100% - 150px);border-radius:999px;padding:6px 10px;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--on-var); }
.companion-input-toolbar .companion-ability,.companion-input-toolbar .companion-call { color:var(--on); }
.companion-input-toolbar .companion-send { background:var(--on);color:var(--surface); }
.companion-input-toolbar .companion-stop { background:var(--on);color:var(--surface); }
.companion-input-toolbar:has(.companion-stop:not([hidden])) .companion-send { display:none; }
.companion-input-options { display:grid;gap:18px; }
.companion-input-options .companion-composer-controls { display:grid;grid-template-columns:1fr;gap:18px; }
.companion-input-options .companion-composer-controls>label { display:grid;max-width:none;gap:8px;font-size:13px; }
.companion-input-options select { width:100%;min-height:48px;border-radius:14px; }
.companion-footer { min-height:18px;gap:4px 10px; }
.companion-footer .companion-state { width:100%;text-align:center;max-height:3.4em;overflow:auto;color:var(--on-var);font-size:12px;line-height:1.7; }
.companion-state[data-phase=idle],.companion-state[data-phase=done] { position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%); }
.companion-voice-slot:empty { display:none; }
.companion-voice { max-width:780px;width:100%;margin:0 auto; }
.companion-voice-controls { padding:10px 12px;border:1px solid var(--outline-var);border-radius:20px;background:var(--sc-low); }
.companion-voice-state { display:flex;align-items:center;gap:8px;font-size:13px; }
.companion-voice-dot { width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0; }
.companion-voice-clock { margin-left:auto;font-variant-numeric:tabular-nums;color:var(--on-var); }
.companion-voice-buttons { display:flex;justify-content:flex-end;flex-wrap:wrap;gap:4px;margin-top:4px; }
.companion-voice-buttons .btn { min-width:44px;min-height:44px;padding:8px 12px;font-size:13px;color:var(--on); }
.companion-voice-buttons .btn[aria-pressed=true] { background:var(--sc); }
.companion-voice-notice { font-size:12px;line-height:1.6;margin:6px 12px;color:var(--on-var); }
@media(max-width:420px){.companion-voice-buttons { justify-content:space-between; }.companion-voice-buttons .btn { padding:8px;font-size:12px; }}
.companion-workspace .companion-intro { padding:28px 16px; }
.companion-workspace .companion-intro h2 { font-size:26px;line-height:1.5;letter-spacing:0; }
.companion-workspace .companion-intro p { max-width:32ch;font-size:14px;line-height:1.9; }
.companion-workspace .companion-intro .companion-figure { height:108px; }
@media(max-width:899px){
  .companion-active .topbar,.companion-active .bottombar { display:none; }
  .companion-active main#main,.companion-active.companion-keyboard main#main { padding:calc(env(safe-area-inset-top) + 8px) 12px calc(env(safe-area-inset-bottom) + 8px); }
  .companion-workspace.page { gap:6px; }
  .companion-topbar { min-height:48px;gap:4px; }
  .companion-topbar .companion-identity { position:static;width:auto;height:auto;overflow:hidden;clip-path:none;justify-content:center;gap:6px; }
  .companion-identity h1 { font-size:17px; }
  .companion-workspace .companion-identity h1 { font-size:17px;line-height:1.4;font-weight:600; }
  .companion-avatar,.companion-avatar .companion-figure img { width:28px;height:28px; }
  .companion-toolbar { width:auto;justify-content:flex-end;gap:0; }
  .companion-topbar .companion-icon-button { padding:10px;min-width:44px;flex-shrink:0; }
  .companion-topbar .btn { background:transparent;color:var(--on); }
  .companion-button-label { position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap; }
  .companion-chat { gap:8px; }
  .companion-messages { padding:18px 8px 24px;gap:24px; }
  .companion-message.from-user { padding:10px 15px;border-radius:20px; }
  .companion-compose { padding:10px 8px 7px;border-radius:26px; }
  .companion-workspace .companion-intro h2 { font-size:22px; }
  .companion-workspace .companion-intro .companion-figure { height:100px; }
  .companion-keyboard .companion-topbar { display:flex; }
  .companion-keyboard .companion-footer .companion-ai-note { display:none; }
  dialog:has(.companion-input-options) { margin:auto 0 0;width:100%;max-width:none;max-height:85dvh;border-radius:24px 24px 0 0;padding:24px 20px max(20px,env(safe-area-inset-bottom)); }
  dialog:has(.companion-history-panel) { margin:0;width:min(88vw,360px);max-width:88vw;height:100dvh;max-height:100dvh;border-radius:0 22px 22px 0;padding:calc(20px + env(safe-area-inset-top)) 20px max(20px,env(safe-area-inset-bottom)); }
}
@media(max-width:899px) and (max-height:520px){
 .companion-topbar { min-height:44px; }.companion-compose textarea { max-height:64px; }.companion-footer .companion-ai-note { display:none; }
 .companion-workspace .companion-intro { padding:8px; }.companion-workspace .companion-intro .companion-figure { height:52px; }
 .companion-workspace .companion-intro p { display:none; }
}
