.voice-button-container{position:relative;display:inline-flex;flex-direction:column;align-items:center}.voice-button-container .voice-status-pill{z-index:11}.voice-button-container .voice-status-pill,.voice-button__transcript{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%)}.voice-button__transcript{background:var(--bg-elevated,#2a2a40);color:var(--text-primary,#eee);font-size:.78rem;padding:6px 12px;border-radius:8px;border:1px solid var(--border-subtle,#333);max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;animation:transcript-fade-in .15s ease-out;z-index:10;box-shadow:0 4px 12px rgba(0,0,0,.3)}@keyframes transcript-fade-in{0%{opacity:0;transform:translateX(-50%) translateY(4px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.voice-button{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;border:none;background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--bg-surface,#1a1a2e) 80%,var(--text-primary) 20%),var(--bg-surface,#1a1a2e) 75%);color:var(--text-primary,#eee);cursor:pointer;transition:color .18s ease,background-color .18s ease,transform .08s ease,box-shadow .2s ease;min-height:44px;min-width:44px}.voice-button:hover:not(:disabled){color:#fff;background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--bg-surface,#1a1a2e) 60%,var(--text-primary) 40%),color-mix(in srgb,var(--bg-surface,#1a1a2e) 80%,var(--text-primary) 20%) 75%)}.voice-button:active:not(:disabled){transform:scale(.94)}.voice-button:focus-visible{outline:2px solid var(--accent-warm,#e8b86b);outline-offset:3px}.voice-button:disabled{opacity:.4;cursor:not-allowed}.voice-button--active{color:#fff;background:radial-gradient(circle at 35% 30%,color-mix(in srgb,#ef4444 70%,#fff 30%),#ef4444 75%);box-shadow:0 0 0 0 color-mix(in srgb,#ef4444 40%,transparent);animation:voice-button-active-pulse 1.6s ease-out infinite}.voice-button--active:hover:not(:disabled){background:radial-gradient(circle at 35% 30%,color-mix(in srgb,#ef4444 60%,#fff 40%),#dc2626 75%)}.voice-button--error{color:#fff;background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--accent-warning,#f59e0b) 70%,#fff 30%),var(--accent-warning,#f59e0b) 75%)}.voice-button__spinner{width:16px;height:16px;border:2px solid;border-top:2px solid rgba(0,0,0,0);border-radius:50%;animation:voice-spin .6s linear infinite}@keyframes voice-button-active-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,#ef4444 45%,transparent)}70%{box-shadow:0 0 0 8px color-mix(in srgb,#ef4444 0%,transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb,#ef4444 0%,transparent)}}@keyframes voice-spin{to{transform:rotate(1turn)}}.voice-button__indicators{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:color-mix(in srgb,var(--bg-elevated,#2a2a40) 92%,transparent);border:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent);box-shadow:0 4px 12px rgba(0,0,0,.3);pointer-events:none;z-index:10;animation:transcript-fade-in .15s ease-out}.voice-button__recording-dot{width:8px;height:8px;border-radius:50%;background:#ef4444;animation:recording-pulse 1.5s ease-in-out infinite;flex-shrink:0}.voice-button__recording-dot--active{background:#fff;animation:recording-pulse .6s ease-in-out infinite}@keyframes recording-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}.voice-button__timer{font-size:12px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:color-mix(in srgb,var(--text-primary) 60%,transparent)}.voice-button__level-bar{width:40px;height:3px;background:color-mix(in srgb,var(--text-primary) 10%,transparent);border-radius:2px;overflow:hidden}.voice-button__level-fill{height:100%;background:rgba(16,255,176,.8);border-radius:2px;transition:width .1s ease-out}.voice-button__transcript-preview{bottom:calc(100% + 44px);font-size:12px;color:var(--text-primary,#eee);padding:5px 10px;border-radius:8px;background:color-mix(in srgb,var(--bg-elevated,#2a2a40) 94%,transparent);border:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent);box-shadow:0 4px 12px rgba(0,0,0,.3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;z-index:11}.voice-button__error,.voice-button__transcript-preview{position:absolute;left:50%;transform:translateX(-50%);display:block;text-align:center;max-width:min(280px,100vw - 32px);width:max-content;animation:transcript-fade-in .15s ease-out}.voice-button__error{bottom:calc(100% + 8px);font-size:11.5px;line-height:1.4;font-weight:500;letter-spacing:.01em;padding:7px 10px;border-radius:10px;background:color-mix(in srgb,var(--accent-red,#ef4444) 14%,var(--bg-elevated,#2a2a40));color:color-mix(in srgb,var(--accent-red,#ef4444) 88%,var(--text-primary));border:1px solid color-mix(in srgb,var(--accent-red,#ef4444) 32%,transparent);box-shadow:0 6px 16px rgba(0,0,0,.35);white-space:normal;overflow-wrap:anywhere;z-index:12}.voice-button__error--mic-busy,.voice-button__error--mic-dismissed{background:color-mix(in srgb,var(--accent-warm,#f59e0b) 14%,var(--bg-elevated,#2a2a40));color:color-mix(in srgb,var(--accent-warm,#f59e0b) 90%,var(--text-primary));border-color:color-mix(in srgb,var(--accent-warm,#f59e0b) 32%,transparent)}.voice-button__error--mic-dismissed{animation:transcript-fade-in .15s ease-out,voice-button-error-pulse 2.4s ease-out forwards}@keyframes voice-button-error-pulse{0%{opacity:1;transform:translateY(0)}85%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-2px)}}@media(prefers-reduced-motion:reduce){.voice-button__error--mic-dismissed{animation:none}}.voice-button__mode-row{display:flex;gap:4px;margin-top:4px}.voice-button__mode-btn{padding:2px 6px;font-size:12px;background:none;border:1px solid;border-radius:4px;cursor:pointer;color:inherit;opacity:.4;transition:opacity .15s}.voice-button__mode-btn--active{opacity:1}.voice-button__orbit-anchor{position:relative;display:inline-flex;align-items:center;justify-content:center}.voice-button__orbit-word{position:absolute;left:50%;top:50%;z-index:2;font-size:.68rem;font-weight:600;line-height:1;white-space:nowrap;pointer-events:none;color:var(--accent-green,#10ffb0);text-shadow:0 0 6px rgba(0,0,0,.55);will-change:transform,opacity;animation:voice-orbit-word-fly 1.35s cubic-bezier(.22,.61,.36,1) forwards}@keyframes voice-orbit-word-fly{0%{opacity:0;transform:translate(-50%,-50%) rotate(var(--orbit-angle)) translateY(-18px) rotate(calc(-1 * var(--orbit-angle))) scale(.78)}18%{opacity:1}72%{opacity:.92}to{opacity:0;transform:translate(-50%,-50%) rotate(var(--orbit-angle)) translateY(-58px) rotate(calc(-1 * var(--orbit-angle))) scale(1.04)}}@media(prefers-reduced-motion:reduce){.voice-button__orbit-word{animation:none;display:none}}.send-icon,.send-icon__plane{transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.send-icon__plane{transform-origin:center}.send-icon__fold{opacity:.6;transition:opacity .2s}.send-icon__glow{transition:opacity .4s ease,r .4s ease}.send-icon__trails{transition:opacity .25s ease,transform .25s ease;transform-origin:right center}button:hover:not(:disabled) .send-icon__plane{transform:translate(1px,-1px)}button:hover:not(:disabled) .send-icon__fold{opacity:1}button:hover:not(:disabled) .send-icon__glow{opacity:.25}button:hover:not(:disabled) .send-icon__trails{opacity:.4}button:active:not(:disabled) .send-icon{transform:scale(.9)}button:active:not(:disabled) .send-icon__plane{transform:translate(3px,-3px) scale(.92);transition-duration:.1s}button:active:not(:disabled) .send-icon__glow{opacity:.5}button:active:not(:disabled) .send-icon__trails{opacity:.7;transform:translateX(-4px)}button:disabled .send-icon{opacity:.4}button:disabled .send-icon__plane{transform:none}.companion-chat{display:flex;flex-direction:column;height:100dvh;min-height:100dvh}@supports(-webkit-touch-callout:none){.companion-chat{height:-webkit-fill-available;min-height:-webkit-fill-available}}.companion-chat{background:linear-gradient(180deg,var(--bg-primary) 0,color-mix(in srgb,var(--bg-primary) 96%,var(--bg-secondary) 4%) 100%);position:relative;min-width:0;overflow:hidden}@media(min-width:1025px){.companion-chat--with-drawer{padding-right:340px}}@media(max-width:768px){.companion-chat{position:fixed;inset:0;min-height:0;max-width:100vw;overflow-x:hidden}}.companion-sidebar-backdrop{position:fixed;inset:0;z-index:199;background:rgba(0,0,0,.4);animation:sidebar-backdrop-in .2s ease}@media(min-width:1025px){.companion-sidebar-backdrop{display:none}}@keyframes sidebar-backdrop-in{0%{opacity:0}to{opacity:1}}.companion-sidebar-drawer{position:fixed;top:0;right:0;bottom:0;width:340px;z-index:200;transform:translateX(0);animation:sidebar-slide-in .2s ease;box-shadow:-4px 0 24px rgba(0,0,0,.3);overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column}@media(min-width:1025px)and (max-width:1280px){.companion-sidebar-drawer{width:300px}}@media(min-width:769px)and (max-width:1024px){.companion-sidebar-drawer{width:300px}}@media(max-width:768px){.companion-sidebar-drawer{width:100%;top:48px}}.companion-sidebar-drawer>.companion-sidebar{width:100%;min-width:0;flex:1 1}@keyframes sidebar-slide-in{0%{transform:translateX(100%)}to{transform:translateX(0)}}.companion-header{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem .5rem;padding:.45rem .9rem;flex-shrink:0;background:linear-gradient(180deg,color-mix(in srgb,var(--bg-surface) 90%,var(--bg-elevated) 10%) 0,var(--bg-surface) 100%);border-bottom:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);min-width:0}@media(min-width:1025px){.companion-header{padding:.5rem 1rem;gap:.35rem .5rem}}.companion-header__back-btn,.companion-header__hamburger-btn{display:none}.companion-header__repaint-btn{position:absolute;bottom:-2px;right:-2px;width:22px;height:22px;padding:0;border-radius:50%;border:2px solid var(--bg-surface);background:var(--accent-purple,var(--accent-blue,var(--text-primary)));color:var(--bg-primary,#0a0a0a);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;opacity:0;transform:scale(.85);transition:opacity .14s ease,transform .14s ease}.companion-header__avatar:focus-within .companion-header__repaint-btn,.companion-header__avatar:hover .companion-header__repaint-btn,.companion-header__repaint-btn:focus-visible{opacity:1;transform:scale(1)}.companion-header__repaint-btn:focus-visible,.companion-header__repaint-btn:hover{filter:brightness(1.08)}.companion-header__repaint-modal{position:fixed;inset:0;z-index:220;display:flex;align-items:center;justify-content:center;padding:1rem;background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.companion-header__repaint-modal-card{width:min(420px,100%);padding:1.25rem 1.4rem;border-radius:var(--border-radius,12px);background:var(--bg-surface);border:1px solid color-mix(in srgb,var(--text-primary) 14%,transparent);box-shadow:0 24px 64px rgba(0,0,0,.45)}.companion-header__repaint-modal-title{margin:0 0 .45rem;font-family:var(--font-display);font-size:1.1rem;color:var(--text-primary)}.companion-header__repaint-modal-body{margin:0 0 1rem;color:var(--text-secondary);font-size:.88rem;line-height:1.55}.companion-header__repaint-modal-error{margin:0 0 .85rem;padding:.6rem .75rem;border-radius:var(--border-radius-sm,8px);background:color-mix(in srgb,var(--accent-red,#ef4444) 14%,transparent);color:var(--accent-red,#ef4444);font-size:.83rem;line-height:1.5}.companion-header__repaint-modal-actions{display:flex;gap:.5rem;justify-content:flex-end}.companion-header__repaint-modal-cancel{padding:.5rem 1rem;border-radius:var(--border-radius-sm,8px);background:rgba(0,0,0,0);border:1px solid color-mix(in srgb,var(--text-primary) 18%,transparent);color:var(--text-secondary);cursor:pointer;font-size:.88rem;font-weight:600}.companion-header__repaint-modal-cancel:hover:not(:disabled){color:var(--text-primary);border-color:color-mix(in srgb,var(--text-primary) 32%,transparent)}.companion-header__repaint-modal-cancel:disabled{opacity:.5;cursor:not-allowed}.companion-header__repaint-modal-confirm{padding:.5rem 1rem;border-radius:var(--border-radius-sm,8px);background:var(--accent-purple,var(--accent-blue,var(--text-primary)));border:none;color:var(--bg-primary,#0a0a0a);cursor:pointer;font-size:.88rem;font-weight:700}.companion-header__repaint-modal-confirm:hover:not(:disabled){filter:brightness(1.08)}.companion-header__repaint-modal-confirm:disabled{opacity:.6;cursor:not-allowed}.companion-header__avatar{position:relative;width:52px;height:52px;flex-shrink:0}.companion-header__avatar img,.companion-header__avatar-placeholder{width:100%;height:100%;border-radius:50%;object-fit:cover}.companion-header__avatar-placeholder{display:flex;align-items:center;justify-content:center;background:var(--accent-teal);color:var(--bg-primary);font-family:var(--font-display);font-weight:700;font-size:1.125rem}.companion-header__avatar[data-speaking=true]{border-radius:50%;box-shadow:0 0 0 3px var(--accent-teal),0 0 16px rgba(78,200,176,.4);animation:speaking-pulse .8s ease-in-out infinite}.companion-header__avatar[data-state=listening]{border-radius:50%;box-shadow:0 0 0 2px var(--accent-blue),0 0 12px rgba(88,166,255,.3);animation:listening-glow 1.5s ease-in-out infinite}.companion-header__avatar[data-state=generating]{border-radius:50%;box-shadow:0 0 0 2px var(--accent-warm),0 0 12px rgba(212,165,116,.3);animation:generating-spin 1.5s linear infinite}.companion-header__mood{position:absolute;bottom:-2px;right:-2px;font-size:14px;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3));pointer-events:none}.companion-header__info{flex:0 1 auto;min-width:0;max-width:12rem;display:flex;flex-direction:column;gap:.1rem}.companion-header__name{font-family:var(--font-display);font-size:.92rem;font-weight:700;margin:0;line-height:1.2;color:var(--text-primary);letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.companion-header__persona{font-size:.75rem;color:var(--text-muted);font-style:italic}.companion-header__persona-wrap{position:relative;display:inline-flex;align-items:center}.companion-header__persona--button{appearance:none;background:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:.15rem .4rem;margin-left:-.4rem;border-radius:6px;cursor:pointer;color:var(--text-muted);font-style:italic;font-size:.75rem;font-family:inherit;transition:background .12s ease,border-color .12s ease,color .12s ease}.companion-header__persona--button:focus-visible,.companion-header__persona--button:hover{background:color-mix(in srgb,var(--accent-blue,#60a5fa) 8%,transparent);border-color:color-mix(in srgb,var(--accent-blue,#60a5fa) 24%,transparent);color:var(--text-primary,#e2e8f0);outline:none}.companion-header__persona-caret{font-size:.7rem;opacity:.7;letter-spacing:-.02em}.companion-header__persona-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:50}.companion-header__chat-origin{font-size:.7rem;color:var(--text-muted);opacity:.78;letter-spacing:.01em;cursor:help}.companion-header__gauges{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:.18rem .35rem;max-width:178px;align-items:center}.companion-header__extras{display:flex;align-items:center;gap:.4rem;flex-shrink:0;margin-left:auto}.companion-header__mode-row{display:inline-flex;align-items:center;gap:.28rem;flex-shrink:0;white-space:nowrap}.companion-header__mode-label{font-size:.6rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;line-height:1}.companion-header__narrate-btn{background:none;border:1px solid var(--border-subtle);border-radius:.5rem;color:var(--text-secondary);cursor:pointer;padding:.5rem;display:flex;align-items:center;justify-content:center;transition:color .15s ease,border-color .15s ease,box-shadow .15s ease}.companion-header__narrate-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}.companion-header__narrate-btn[aria-label=Mute]{color:var(--accent-green);border-color:var(--accent-green);box-shadow:0 0 8px color-mix(in srgb,var(--accent-green) 20%,transparent)}.companion-header__tier{font-size:.62rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;display:inline-flex;align-items:center;flex-shrink:0;gap:.25rem}.companion-header__tier-select{appearance:none;background:color-mix(in srgb,var(--text-primary) 4%,transparent);color:var(--text-secondary);border:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent);border-radius:6px;padding:2px 6px;font-size:.64rem;font-family:inherit;max-width:8.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;letter-spacing:.04em;transition:border-color .15s,background .15s;cursor:pointer}.companion-header__tier-select:hover{border-color:var(--border-default)}.companion-header__tier-select:focus{outline:1px solid var(--accent-warm);outline-offset:1px}.companion-header__settings{background:none;border:none;color:var(--text-secondary);font-size:1.25rem;cursor:pointer;padding:.5rem}.companion-header__settings:hover{color:var(--text-primary)}.companion-header__edit-link{display:inline-block;font-size:.75rem;color:var(--text-muted);text-decoration:none;padding:.15rem .5rem;border:1px solid var(--border-subtle);border-radius:.375rem;margin-left:.5rem;transition:color .12s ease,border-color .12s ease}.companion-header__edit-link:hover{color:var(--text-primary);border-color:var(--text-secondary)}.companion-header__sidebar-btn{background:none;border:1px solid var(--border-subtle);border-radius:.5rem;color:var(--text-secondary);cursor:pointer;padding:.5rem;display:flex;align-items:center;justify-content:center;position:relative;transition:color .12s ease,border-color .12s ease}.companion-header__sidebar-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}.companion-header__badge{position:absolute;top:-4px;right:-4px;width:16px;height:16px;border-radius:50%;background:var(--status-danger,#ef4444);color:var(--text-on-accent,#fff);border:1.5px solid var(--bg-primary);box-shadow:0 2px 6px color-mix(in srgb,var(--status-danger,#ef4444) 40%,transparent);font-size:.75rem;font-weight:700;display:flex;align-items:center;justify-content:center}.gauge__label{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0;white-space:nowrap}.gauge__label--trust{color:var(--accent-green)}.gauge__label--affection{color:#f472b6}.gauge{flex:1 1;height:6px;background:color-mix(in srgb,var(--text-primary) 8%,transparent);border-radius:3px;overflow:hidden}.gauge__fill{height:100%;border-radius:3px;width:var(--bar-width,0);transition:width .3s ease}.gauge__fill--trust{background:var(--accent-green);box-shadow:0 0 6px color-mix(in srgb,var(--accent-green) 30%,transparent)}.gauge__fill--affection{background:#f472b6;box-shadow:0 0 6px rgba(244,114,182,.3)}.companion-chat--with-sidebar .companion-header{grid-column:1/-1}.companion-header__tier-error{grid-column:1/-1;margin:.25rem 1rem 0;padding:.5rem .75rem;border-radius:.375rem;background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.4);color:#fecaca;font-size:.8125rem;line-height:1.35;cursor:pointer;-webkit-user-select:none;user-select:none}.companion-header__tier-error span{opacity:.65;margin-left:.25rem}.companion-header__mode-note{flex:0 0 100%;width:100%;margin:.15rem 1rem 0;font-size:.72rem;line-height:1.35;color:var(--text-muted)}.companion-chat__sidebar-wrapper{grid-column:2;grid-row:2/4;border-left:1px solid var(--border-subtle);background:var(--bg-surface);overflow-y:auto}.companion-chat__voice-wrap{position:relative;display:inline-flex}.companion-chat__assistant-badge{width:min(56rem,100% - 2rem);margin:0 auto .4rem;display:flex;flex-shrink:0}.companion-chat__assistant-badge-chip{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:.7rem;border:1px solid color-mix(in srgb,var(--accent-blue,#6ea8ff) 28%,transparent);background:color-mix(in srgb,var(--accent-blue,#6ea8ff) 10%,var(--bg-surface,#12131a));color:var(--text-secondary);font-size:.72rem;line-height:1.3;cursor:help;-webkit-user-select:none;user-select:none}.companion-chat__feed{flex:1 1 auto;overflow-y:auto;min-width:0;overflow-x:hidden;padding:1rem 2rem;display:flex;flex-direction:column;gap:.75rem;scroll-behavior:smooth;scrollbar-width:none;width:100%;max-width:56rem;margin:0 auto;min-height:0}.companion-chat__feed::-webkit-scrollbar{display:none}.companion-chat__feed>*{flex-shrink:0}.companion-chat__feed:has(>.companion-chat__empty):not(:has(>.message__wrapper)),.companion-chat__feed:has(>.companion-chat__starters):not(:has(>.message__wrapper)){justify-content:center;align-items:center;gap:1.25rem;padding:2rem}.companion-chat__settings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr)) auto;gap:.75rem;padding:.875rem 1rem;background:color-mix(in srgb,var(--bg-surface) 92%,var(--accent-blue) 8%);border-bottom:1px solid var(--border-subtle)}.companion-chat__setting{display:flex;flex-direction:column;gap:.35rem}.companion-chat__setting span{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.companion-chat__setting select{width:100%;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:.75rem;padding:.625rem .75rem;color:var(--text-primary)}.companion-chat__save-settings{align-self:end;padding:.7rem 1rem;background:var(--accent-green);color:var(--bg-primary);border:none;border-radius:.75rem;font-family:var(--font-display);font-weight:700;cursor:pointer}.companion-chat__save-settings:disabled{opacity:.5;cursor:wait}.companion-chat__typing{position:relative;display:flex;gap:5px;padding:.85rem 1rem 1rem;align-self:flex-start;isolation:isolate}.companion-chat__typing span{width:7px;height:7px;background:var(--accent,#f59e0b);border-radius:50%;animation:companion-typing-bounce 1.1s cubic-bezier(.6,.05,.4,.95) infinite;opacity:.55}.companion-chat__typing span:first-child{animation-delay:-.36s}.companion-chat__typing span:nth-child(2){animation-delay:-.18s}.companion-chat__typing span:nth-child(3){animation-delay:0s}.companion-chat__typing:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--accent,#f59e0b) 24%,transparent) 30%,var(--accent,#f59e0b) 50%,color-mix(in srgb,var(--accent,#f59e0b) 24%,transparent) 70%,transparent 100%);background-size:220% 100%;background-repeat:no-repeat;animation:companion-typing-progress 1.6s linear infinite;opacity:.6;border-radius:2px}@keyframes companion-typing-bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}@keyframes companion-typing-progress{0%{background-position:100% 0}to{background-position:-120% 0}}@media(prefers-reduced-motion:reduce){.companion-chat__typing span,.companion-chat__typing:after{animation:none}.companion-chat__typing span{opacity:.85}}.message{display:flex;flex-direction:column;min-width:0;max-width:88%}.message--user{align-self:flex-end;align-items:flex-end}.message--companion{align-self:flex-start;align-items:flex-start}.message--system{align-self:center;max-width:94%}.message__name{font-size:.75rem;color:var(--text-muted);margin-bottom:.25rem}.message__actions{display:flex;gap:.25rem;align-self:inherit;margin-bottom:.25rem;opacity:0;transform:translateY(2px);transition:opacity .14s ease,transform .14s ease;pointer-events:none}.message:focus-within .message__actions,.message:hover .message__actions{opacity:1;transform:none;pointer-events:auto}.message__bookmark,.message__branch{appearance:none;background:rgba(0,0,0,0);border:1px solid color-mix(in srgb,var(--text-muted) 25%,transparent);border-radius:999px;color:var(--text-muted);cursor:pointer;font-size:.75rem;line-height:1;padding:.2rem .4rem;transition:color .14s ease,border-color .14s ease,background .14s ease}.message__bookmark:focus-visible,.message__bookmark:hover,.message__branch:focus-visible,.message__branch:hover{color:var(--text-primary);border-color:color-mix(in srgb,var(--accent-warm,var(--text-primary)) 40%,transparent);background:color-mix(in srgb,var(--accent-warm,var(--text-primary)) 8%,transparent);outline:none}.message__bookmark--active{color:var(--accent-warm,#d4a24a);border-color:color-mix(in srgb,var(--accent-warm,#d4a24a) 60%,transparent)}.message:has(.message__bookmark--active) .message__actions{opacity:1;transform:none;pointer-events:auto}.message__branch-wrap{position:relative;display:inline-flex}.message__branch--coming-soon{opacity:.65;cursor:help}.message__branch-popover{position:absolute;top:calc(100% + 6px);right:0;z-index:5;white-space:nowrap;background:var(--bg-surface,#1f1f1f);color:var(--text-primary,#f0f0f0);border:1px solid color-mix(in srgb,var(--accent-warm,#d4a24a) 40%,transparent);border-radius:.5rem;padding:.4rem .6rem;font-size:.75rem;line-height:1.3;box-shadow:0 4px 14px rgba(0,0,0,.35);pointer-events:none;animation:fadeInUp .14s ease forwards}.message__bubble{padding:.85rem 1.1rem;border-radius:1.125rem;line-height:1.7;font-size:.94rem;letter-spacing:.005em;min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:break-word}.message__bubble:empty,.message__bubble:has(>.message__cursor:only-child){padding:.5rem .75rem;min-height:0}.message__bubble--pending{position:relative;padding:.85rem 1.1rem 1rem!important;min-height:0;isolation:isolate}.message__bubble--pending:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--accent,#f59e0b) 24%,transparent) 30%,var(--accent,#f59e0b) 50%,color-mix(in srgb,var(--accent,#f59e0b) 24%,transparent) 70%,transparent 100%);background-size:220% 100%;background-repeat:no-repeat;animation:companion-typing-progress 1.6s linear infinite;opacity:.7;border-radius:0 0 1rem .25rem}.message--user .message__bubble{background:linear-gradient(135deg,color-mix(in srgb,var(--accent-teal) 28%,var(--bg-card) 72%) 0,color-mix(in srgb,var(--accent-teal) 18%,var(--bg-card) 82%) 100%);color:var(--text-primary);border:1px solid color-mix(in srgb,var(--accent-teal) 40%,transparent);border-bottom-right-radius:.25rem;font-weight:500;box-shadow:0 2px 8px color-mix(in srgb,var(--accent-teal) 12%,transparent),inset 0 1px 0 color-mix(in srgb,var(--text-primary) 4%,transparent)}.message--companion .message__bubble{background:linear-gradient(135deg,color-mix(in srgb,var(--bg-card) 92%,var(--bg-elevated) 8%) 0,color-mix(in srgb,var(--bg-card) 96%,var(--bg-primary) 4%) 100%);color:var(--text-primary);border:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent);border-bottom-left-radius:.25rem;backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2);box-shadow:0 6px 18px color-mix(in srgb,var(--text-primary) 8%,transparent),0 2px 6px color-mix(in srgb,var(--text-primary) 5%,transparent),inset 0 1px 0 color-mix(in srgb,var(--text-primary) 3%,transparent)}.message--system .message__bubble{background:color-mix(in srgb,var(--bg-surface) 80%,transparent);color:var(--text-secondary);font-size:.82rem;text-align:center;border-radius:999px;border:1px solid hsla(0,0%,100%,.04);padding:.5rem 1.25rem}.message__bubble em,.message__bubble i{display:block;color:var(--text-secondary);font-style:italic;font-size:.84em;padding:.25rem 0 .25rem .75rem;border-left:2px solid color-mix(in srgb,var(--accent-teal) 40%,transparent);margin:.35rem 0;line-height:1.55}.message__text{margin:0;white-space:pre-wrap;word-break:break-word;font-family:var(--font-body)}.message__time{font-size:.72rem;color:var(--text-muted);margin-top:.3rem;letter-spacing:.02em;gap:.4rem}.message__mode-badge,.message__time{font-family:var(--font-mono,monospace);display:inline-flex;align-items:center}.message__mode-badge{padding:.1rem .4rem;border-radius:999px;font-size:.62rem;font-weight:600;letter-spacing:.06em;border:1px solid;line-height:1;opacity:.82}.message__mode-badge--do{color:var(--accent-warm,#d8a05c)}.message__mode-badge--character_do{color:var(--accent-cool,#79a8c4)}.message__wrapper{position:relative;display:flex;flex-direction:column;gap:.75rem}.message__wrapper--user{align-items:flex-end}.message__wrapper--companion,.message__wrapper--system{align-items:flex-start}@keyframes fadeInUp{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:none}}.recall-citations{margin-top:.25rem}.recall-citations__toggle{display:inline-flex;align-items:center;gap:.3rem;background:none;border:none;cursor:pointer;font-size:.72rem;color:var(--text-muted);padding:.2rem 0;transition:color .15s}.recall-citations__toggle:hover{color:var(--text-secondary)}.recall-citations__toggle svg{opacity:.6}.recall-citations__chevron{font-size:.6rem;margin-left:.15rem}.recall-citations__list{display:flex;flex-direction:column;gap:.35rem;margin-top:.35rem;padding:.4rem .5rem;background:color-mix(in srgb,var(--bg-surface) 60%,transparent);border-radius:.375rem;border:1px solid var(--border-subtle)}.recall-citations__item{display:flex;flex-direction:column;gap:.15rem}.recall-citations__text{font-size:.75rem;color:var(--text-secondary);line-height:1.4}.recall-citations__meta{display:flex;align-items:center;gap:.4rem}.recall-citations__source{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--accent-teal)}.recall-citations__strength{height:3px;background:var(--accent-blue);border-radius:2px;max-width:60px;min-width:8px}.companion-chat__narrating{display:flex;align-items:center;gap:.3rem;padding:.2rem .6rem;font-size:.65rem;font-weight:600;letter-spacing:.03em;color:var(--accent-teal);background:color-mix(in srgb,var(--bg-surface) 92%,var(--accent-teal) 8%);border:1px solid color-mix(in srgb,var(--accent-teal) 15%,transparent);border-radius:999px;width:fit-content;position:absolute;bottom:70px;left:50%;transform:translateX(-50%);z-index:10;opacity:.7;pointer-events:none}.companion-chat__narrating-wave{display:flex;align-items:center;gap:1.5px;height:12px}.companion-chat__narrating-bar{width:2px;height:100%;background:var(--accent-teal);border-radius:1px;animation:narrate-wave 1s ease-in-out infinite}.companion-chat__narrating-bar:first-child{animation-delay:0s;height:6px}.companion-chat__narrating-bar:nth-child(2){animation-delay:.1s;height:10px}.companion-chat__narrating-bar:nth-child(3){animation-delay:.2s;height:8px}.companion-chat__narrating-bar:nth-child(4){animation-delay:.3s;height:12px}.companion-chat__narrating-bar:nth-child(5){animation-delay:.15s;height:9px}@keyframes narrate-wave{0%,to{transform:scaleY(.4);opacity:.5}50%{transform:scaleY(1);opacity:1}}.companion-chat__milestone{display:flex;align-items:center;justify-content:center;padding:.4rem 1rem;font-size:.78rem;font-weight:600;color:var(--accent-warm,#f59e0b);background:color-mix(in srgb,var(--accent-warm) 8%,var(--bg-surface) 92%);border:1px solid color-mix(in srgb,var(--accent-warm) 20%,transparent);border-radius:999px;width:fit-content;margin:.4rem auto;animation:milestone-in .4s ease}@keyframes milestone-in{0%{opacity:0;transform:translateY(8px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.companion-chat__delta-toast{display:flex;align-items:center;gap:.4rem;padding:.3rem .85rem;font-size:.74rem;font-weight:600;border-radius:999px;width:fit-content;margin:.3rem auto;animation:delta-toast-in .35s ease,delta-toast-out .4s ease 2.8s forwards;pointer-events:none}.companion-chat__delta-toast--up{color:#22c55e;background:color-mix(in srgb,#22c55e 10%,var(--bg-surface) 90%);border:1px solid color-mix(in srgb,#22c55e 28%,transparent)}.companion-chat__delta-toast--down{color:#ef4444;background:color-mix(in srgb,#ef4444 10%,var(--bg-surface) 90%);border:1px solid color-mix(in srgb,#ef4444 28%,transparent)}@keyframes delta-toast-in{0%{opacity:0;transform:translateY(6px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes delta-toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}.companion-chat__composer{display:flex;align-items:center;gap:.5rem;padding:.65rem 1.5rem .85rem;background:var(--bg-primary);border-top:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent);width:100%;max-width:56rem;margin:0 auto;position:sticky;bottom:0;z-index:5;flex-shrink:0}.companion-chat__composer>*{align-self:center}.companion-chat__mode-picker{position:relative;display:inline-flex;align-items:center;height:36px;padding:0 1.85rem 0 .75rem;border-radius:1.1rem;background:var(--bg-surface);border:1.5px solid color-mix(in srgb,var(--text-primary) 12%,transparent);color:var(--text-primary);font-family:var(--font-body);font-size:.78rem;letter-spacing:.01em;cursor:pointer;transition:border-color .2s,background .2s,color .2s,opacity .2s;-webkit-user-select:none;user-select:none;flex-shrink:0;max-width:11rem}.companion-chat__mode-picker:hover:not(.companion-chat__mode-picker--disabled){border-color:color-mix(in srgb,var(--text-primary) 24%,transparent)}.companion-chat__mode-picker:focus-within{border-color:color-mix(in srgb,var(--accent-cool,#79a8c4) 60%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-cool,#79a8c4) 18%,transparent)}.companion-chat__mode-picker--do{border-color:color-mix(in srgb,var(--accent-warm,#d8a05c) 55%,transparent);color:var(--accent-warm,#d8a05c)}.companion-chat__mode-picker--character_do{border-color:color-mix(in srgb,var(--accent-cool,#79a8c4) 55%,transparent);color:var(--accent-cool,#79a8c4)}.companion-chat__mode-picker--disabled{opacity:.5;cursor:not-allowed}.companion-chat__mode-picker-select{appearance:none;background:rgba(0,0,0,0);border:none;outline:none;color:inherit;font:inherit;cursor:inherit;margin:0;padding:0;height:100%;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.companion-chat__mode-picker-chevron{position:absolute;right:.6rem;font-size:.7rem;line-height:1;opacity:.7;pointer-events:none}.companion-chat__input{flex:1 1;background:var(--bg-surface);border:1.5px solid color-mix(in srgb,var(--text-primary) 12%,transparent);border-radius:1.25rem;padding:.55rem 1.1rem;color:var(--text-primary);font-family:var(--font-body);font-size:.9375rem;resize:none;outline:none;min-height:42px;max-height:200px;overflow-y:auto;transition:border-color .2s,box-shadow .2s,background .2s,opacity .2s}.companion-chat__input::placeholder{color:var(--text-muted);font-style:italic}.companion-chat__input:focus{border-color:color-mix(in srgb,var(--accent-warm,#c9975a) 50%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-warm) 12%,transparent)}.companion-chat__input--sending{opacity:.7;cursor:progress;background:color-mix(in srgb,var(--bg-surface) 92%,var(--text-muted,#9ca3af) 8%);border-color:color-mix(in srgb,var(--accent-warm,#c9975a) 28%,transparent);animation:companion-chat-input-shimmer 1.6s ease-in-out infinite}@keyframes companion-chat-input-shimmer{0%,to{box-shadow:0 0 0 1px color-mix(in srgb,var(--accent-warm,#c9975a) 18%,transparent)}50%{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-warm,#c9975a) 35%,transparent)}}@media(prefers-reduced-motion:reduce){.companion-chat__input--sending{animation:none}}.companion-chat__send{width:42px;height:42px;border-radius:50%;border:none;border-top:1px solid color-mix(in srgb,var(--accent-warm) 40%,white 60%);background:linear-gradient(180deg,color-mix(in srgb,var(--accent-warm,#c9975a) 85%,white 15%) 0,var(--accent-warm,#a67840) 45%,color-mix(in srgb,var(--accent-warm,#8a6232) 60%,black 40%) 100%);color:#1a1410;font-size:1rem;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 0 0 rgba(255,235,200,.2) inset,0 -1px 0 0 rgba(80,50,20,.35) inset,0 3px 12px color-mix(in srgb,var(--accent-warm) 25%,transparent);transition:box-shadow .2s,transform .15s,background .15s}.companion-chat__send:disabled{opacity:.35;cursor:not-allowed;transform:none}.companion-chat__send:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 1px 0 0 rgba(255,235,200,.3) inset,0 -1px 0 0 rgba(80,50,20,.3) inset,0 6px 20px color-mix(in srgb,var(--accent-warm) 30%,transparent)}.companion-chat__send:not(:disabled):active{transform:translateY(1px);box-shadow:inset 0 -1px 0 0 rgba(255,235,200,.1),inset 0 1px 0 0 rgba(80,50,20,.4),0 1px 4px rgba(0,0,0,.15)}@media(max-width:768px){.companion-chat,.companion-chat--with-sidebar{grid-template-columns:minmax(0,1fr)!important}.companion-chat__sidebar-wrapper{display:none}.companion-chat__settings{grid-template-columns:1fr}.companion-chat__feed{padding:.75rem}.message{width:100%}.message,.message--system{max-width:100%}.companion-header{padding:max(6px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) 6px max(8px,env(safe-area-inset-left));gap:.4rem;position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:color-mix(in srgb,var(--bg-primary,#0b0b11) 94%,transparent);border-bottom:1px solid color-mix(in srgb,var(--text-primary,#fff) 10%,transparent);flex-wrap:nowrap;min-height:48px;box-sizing:border-box;overflow:hidden}.companion-header__back-btn{display:inline-flex!important;flex-shrink:0;width:36px;height:36px;min-width:36px;align-items:center;justify-content:center;padding:0;border-radius:10px;background:color-mix(in srgb,var(--text-primary,#fff) 6%,transparent);border:1px solid color-mix(in srgb,var(--text-primary,#fff) 12%,transparent);color:var(--text-primary);cursor:pointer;transition:background .15s,border-color .15s}.companion-header__back-btn:active{background:color-mix(in srgb,var(--text-primary,#fff) 14%,transparent)}.companion-header__hamburger-btn{display:inline-flex!important;flex-shrink:0;width:36px;height:36px;min-width:36px;align-items:center;justify-content:center;padding:0;border-radius:10px;background:color-mix(in srgb,var(--text-primary,#fff) 6%,transparent);border:1px solid color-mix(in srgb,var(--text-primary,#fff) 12%,transparent);color:var(--text-primary);cursor:pointer;transition:background .15s,border-color .15s}.companion-header__hamburger-btn:active{background:color-mix(in srgb,var(--text-primary,#fff) 14%,transparent)}.companion-header__avatar,.companion-header__avatar *{width:32px!important;height:32px!important}.companion-header__avatar *{max-width:32px!important;max-height:32px!important}.companion-header__avatar .companion-header__mood{width:auto!important;height:auto!important;max-width:none!important;max-height:none!important;font-size:11px;bottom:-3px;right:-3px}.companion-header__avatar .companion-header__mood-label{display:none}.companion-header__info{flex:1 1;min-width:0;display:flex;flex-direction:column;justify-content:center}.companion-header__name{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;line-height:1.2;min-width:0;max-width:100%}.companion-header__edit-link,.companion-header__extras,.companion-header__gauges,.companion-header__mode-row,.companion-header__narrate-btn,.companion-header__persona,.companion-header__tier{display:none}.companion-header__sidebar-btn{padding:8px;flex-shrink:0;width:40px;min-width:40px;height:40px;min-height:40px;margin-left:auto;border-radius:10px;background:color-mix(in srgb,var(--text-primary,#fff) 8%,transparent);border:1px solid color-mix(in srgb,var(--text-primary,#fff) 14%,transparent)}.companion-header__sidebar-btn svg{width:20px!important;height:20px!important}.companion-header__sidebar-btn:active{background:color-mix(in srgb,var(--text-primary,#fff) 14%,transparent)}.companion-chat__empty{padding:.5rem;gap:.4rem!important}.companion-chat__empty-avatar{width:56px!important;height:56px!important}.companion-chat__empty-avatar img,.companion-chat__empty-avatar span{width:56px!important;height:56px!important;font-size:1.4rem!important}.companion-chat__empty-name{font-size:1rem!important;margin:0!important}.companion-chat__empty-trait{font-size:.78rem!important}.companion-chat__starters{gap:6px!important;padding:0 .5rem!important}.companion-chat__starters button{font-size:.78rem!important;padding:6px 10px!important}.companion-chat__feed{padding:.4rem .75rem;min-height:0}.companion-chat__composer{padding:.25rem .5rem calc(.25rem + env(safe-area-inset-bottom, 0px));gap:.25rem;background:color-mix(in srgb,var(--bg-primary,#0b0b11) 92%,transparent);border-top:1px solid color-mix(in srgb,var(--text-primary,#fff) 8%,transparent)}.companion-chat__composer button{flex-shrink:0}.companion-chat__composer .companion-chat__mode-picker{height:36px;max-width:5.4rem;padding-right:1.4rem;font-size:.72rem}.companion-chat__send{width:36px;height:36px;min-width:36px;border-radius:50%}.companion-chat__voice-wrap>*{width:36px!important;height:36px!important;min-width:36px!important}.companion-chat__input{min-width:0;min-height:54px;max-height:30dvh;padding:.4rem .7rem;font-size:.95rem;line-height:1.3}}@keyframes speaking-pulse{0%,to{box-shadow:0 0 0 3px var(--accent-teal),0 0 12px color-mix(in srgb,var(--accent-teal) 25%,transparent)}50%{box-shadow:0 0 0 5px color-mix(in srgb,var(--accent-teal) 50%,transparent),0 0 20px color-mix(in srgb,var(--accent-teal) 20%,transparent)}}@keyframes listening-glow{0%,to{box-shadow:0 0 0 2px var(--accent-blue),0 0 12px color-mix(in srgb,var(--accent-blue) 25%,transparent)}50%{box-shadow:0 0 0 4px var(--accent-blue),0 0 22px color-mix(in srgb,var(--accent-blue) 40%,transparent)}}@keyframes generating-spin{0%{box-shadow:0 0 0 2px var(--accent-warm),0 0 10px color-mix(in srgb,var(--accent-warm) 20%,transparent)}25%{box-shadow:0 0 0 4px var(--accent-warm),0 0 18px color-mix(in srgb,var(--accent-warm) 35%,transparent)}50%{box-shadow:0 0 0 2px var(--accent-warm),0 0 10px color-mix(in srgb,var(--accent-warm) 20%,transparent)}75%{box-shadow:0 0 0 3px var(--accent-warm),0 0 14px color-mix(in srgb,var(--accent-warm) 30%,transparent)}to{box-shadow:0 0 0 2px var(--accent-warm),0 0 8px color-mix(in srgb,var(--accent-warm) 15%,transparent)}}.drift-notification{display:flex;align-items:flex-start;gap:.5rem;margin-top:.5rem;padding:.5rem .75rem;background:rgba(99,102,241,.08);border-left:3px solid rgba(139,92,246,.5);border-radius:0 .375rem .375rem 0;font-size:.78rem;color:rgba(196,181,253,.9);line-height:1.5}.drift-notification__icon{flex-shrink:0;color:rgba(167,139,250,.8);font-size:.9rem}.drift-notification__text{display:flex;flex-direction:column;gap:.2rem}.message__media{display:block;max-width:100%;border-radius:.5rem;margin-top:.375rem}.message--user .message__media{border-radius:.75rem .75rem .25rem .75rem}.message--companion .message__media{border-radius:.75rem .75rem .75rem .25rem}.message__media-button{display:block;padding:0;margin:0;background:none;border:none;cursor:zoom-in;color:inherit;width:100%;text-align:inherit}.message__media-button:focus-visible{outline:2px solid var(--accent-blue,#6366f1);outline-offset:2px;border-radius:.5rem}.message__media-button img{pointer-events:none}.message__media-list{display:flex;flex-direction:column;gap:6px;margin-top:6px}.message__media-card{max-width:280px;border-radius:10px;overflow:hidden;border:1px solid var(--border-subtle)}.message__media-img{display:block;width:100%;height:auto;max-height:320px;object-fit:cover}.message__media-attr{padding:4px 8px;font-size:10px;color:var(--text-muted)}.message__cursor{display:inline-flex;align-items:flex-end;gap:4px;margin-left:4px;vertical-align:initial;height:1em;padding-bottom:.15em}.message__pending{display:inline-flex;align-items:center;gap:5px;height:1em;padding:0}.message__pending .message__pending-dot{width:7px;height:7px;border-radius:50%;background:var(--accent,#f59e0b);opacity:.55;animation:companion-typing-bounce 1.1s cubic-bezier(.6,.05,.4,.95) infinite}.message__pending .message__pending-dot:first-child{animation-delay:-.36s}.message__pending .message__pending-dot:nth-child(2){animation-delay:-.18s}.message__pending .message__pending-dot:nth-child(3){animation-delay:0s}@media(prefers-reduced-motion:reduce){.message__pending .message__pending-dot{animation:none;opacity:.85}.message__bubble--pending:after{animation:none}}.message__cursor-dot{width:5px;height:5px;border-radius:50%;background:color-mix(in srgb,var(--text-secondary,#9ca3af) 70%,transparent);animation:cursor-dot-bounce 1.2s ease-in-out infinite}.message__cursor-dot:first-child{animation-delay:0s}.message__cursor-dot:nth-child(2){animation-delay:.2s}.message__cursor-dot:nth-child(3){animation-delay:.4s}@keyframes cursor-dot-bounce{0%,60%,to{transform:translateY(0);opacity:.45}30%{transform:translateY(-3px);opacity:1}}@media(prefers-reduced-motion:reduce){.message__cursor-dot{animation:cursor-dot-pulse 1.4s ease-in-out infinite;transform:none!important}@keyframes cursor-dot-pulse{0%,to{opacity:.45}50%{opacity:1}}}.companion-header__mood-label{display:block;text-align:center;font-size:.6rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--text-muted);padding:1px 6px;background:color-mix(in srgb,var(--text-primary) 4%,transparent);border-radius:4px;width:fit-content;position:absolute;bottom:-10px;left:50%;transform:translateX(-50%);white-space:nowrap;transition:opacity .3s ease,color .3s ease}.companion-header__avatar--happy .companion-header__avatar-placeholder,.companion-header__avatar--happy img,.companion-header__avatar--playful .companion-header__avatar-placeholder,.companion-header__avatar--playful img{filter:brightness(1.05)}.companion-header__avatar--melancholic .companion-header__avatar-placeholder,.companion-header__avatar--melancholic img,.companion-header__avatar--sad .companion-header__avatar-placeholder,.companion-header__avatar--sad img{filter:saturate(.85)}.companion-header__avatar--angry .companion-header__avatar-placeholder,.companion-header__avatar--angry img{filter:hue-rotate(5deg) saturate(1.2)}.companion-header__avatar--anxious .companion-header__avatar-placeholder,.companion-header__avatar--anxious img{animation:mood-anxious-pulse 2s ease-in-out infinite}.companion-header__avatar--flirty .companion-header__avatar-placeholder,.companion-header__avatar--flirty img{filter:hue-rotate(-10deg) brightness(1.03)}@keyframes mood-anxious-pulse{0%,to{opacity:1}50%{opacity:.88}}.companion-chat__empty{flex-direction:column;flex:1 1;color:var(--text-muted);text-align:center;gap:.5rem;padding:2rem}.companion-chat__empty,.companion-chat__empty-avatar{display:flex;align-items:center;justify-content:center}.companion-chat__empty-avatar{width:80px;height:80px;border-radius:50%;overflow:hidden;background:var(--accent-teal,#2dd4bf);margin-bottom:.5rem}.companion-chat__empty-avatar img{width:100%;height:100%;object-fit:cover}.companion-chat__empty-avatar span{font-size:2rem;font-weight:700;color:var(--bg-primary);font-family:var(--font-display)}.companion-chat__empty-name{font-family:var(--font-display);font-size:1.25rem;font-weight:600;color:var(--text-primary);margin:0}.companion-chat__empty-hint{font-size:.8rem;color:var(--text-muted);margin:0;text-transform:capitalize}.companion-chat__start-btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 28px;background:linear-gradient(180deg,#3be8c4,#1db99a 50%,#169e82);color:#0a1f1a;border:none;border-radius:10px;font-weight:700;font-size:14px;font-family:var(--font-display,inherit);cursor:pointer;letter-spacing:.03em;box-shadow:0 4px 0 #0e7e68,0 5px 20px rgba(16,255,176,.15),inset 0 1px 0 color-mix(in srgb,var(--text-primary) 20%,transparent);text-shadow:0 1px 0 color-mix(in srgb,var(--text-primary) 15%,transparent);transition:box-shadow .25s,filter .15s;margin:12px 0 16px;position:relative}.companion-chat__start-btn:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;border-radius:10px 10px 0 0;background:linear-gradient(180deg,color-mix(in srgb,var(--text-primary) 15%,transparent),transparent);pointer-events:none}.companion-chat__start-btn:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 4px 0 #0e7e68,0 0 28px rgba(16,255,176,.25),inset 0 1px 0 color-mix(in srgb,var(--text-primary) 25%,transparent)}.companion-chat__start-btn:active:not(:disabled){box-shadow:0 2px 0 #0e7e68,0 0 8px rgba(16,255,176,.12),inset 0 1px 0 color-mix(in srgb,var(--text-primary) 10%,transparent);transform:translateY(2px)}.companion-chat__start-btn:disabled{opacity:.6;cursor:wait}.companion-chat__starters{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-top:.75rem}.companion-chat__starter-chip{padding:.4rem .875rem;border:1px solid var(--border-subtle);border-radius:999px;background:rgba(0,0,0,0);color:var(--text-secondary);font-size:.8rem;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.companion-chat__starter-chip:hover{background:var(--bg-card);border-color:var(--accent-blue);color:var(--text-primary)}.message--segment{margin-top:4px}.message--segment:first-child{margin-top:0}.companion-chat__typing--follow-up{display:inline-flex;gap:4px;padding:8px 16px;margin-left:8px}.companion-chat__typing--follow-up span{width:6px;height:6px;border-radius:50%;background:var(--text-muted,#666);animation:follow-up-bounce 1.2s infinite}.companion-chat__typing--follow-up span:nth-child(2){animation-delay:.2s}.companion-chat__typing--follow-up span:nth-child(3){animation-delay:.4s}@keyframes follow-up-bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.companion-chat__typing--photo{display:inline-flex;align-items:center;gap:10px;padding:10px 14px;margin-left:8px;border-radius:18px;background:color-mix(in srgb,var(--accent-teal,#3be8c4) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent-teal,#3be8c4) 24%,transparent);color:var(--text-primary);font-size:.82rem;max-width:max-content}.companion-chat__typing-photo-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--accent-teal,#3be8c4);animation:photo-icon-pulse 1.6s ease-in-out infinite}.companion-chat__typing-photo-label{font-weight:600;letter-spacing:.01em}.companion-chat__typing-photo-dots{display:inline-flex;gap:3px;margin-left:2px}.companion-chat__typing-photo-dots span{width:4px;height:4px;border-radius:50%;background:var(--accent-teal,#3be8c4);animation:follow-up-bounce 1.2s infinite}.companion-chat__typing-photo-dots span:nth-child(2){animation-delay:.2s}.companion-chat__typing-photo-dots span:nth-child(3){animation-delay:.4s}@keyframes photo-icon-pulse{0%,to{transform:scale(1);opacity:.85}50%{transform:scale(1.12);opacity:1}}@media(prefers-reduced-motion:reduce){.companion-chat__typing-photo-icon{animation:none}.companion-chat__typing-photo-dots span{animation:none;opacity:.7}}.message--corrupted{display:flex;flex-direction:column;align-items:flex-start;margin:8px 0}.companion-chat__persona-mismatch-banner{margin:.5rem 0;padding:.85rem 1rem;border:1px solid color-mix(in srgb,var(--accent-warning,#f59e0b) 45%,transparent);background:color-mix(in srgb,var(--accent-warning,#f59e0b) 8%,transparent);border-radius:8px;color:color-mix(in srgb,var(--text-primary) 94%,transparent);font-size:.88rem}.companion-chat__persona-mismatch-banner__title{display:flex;align-items:center;gap:8px;font-weight:600}.companion-chat__persona-mismatch-banner__body{margin:.4rem 0 .6rem;line-height:1.45}.companion-chat__persona-mismatch-banner__actions{display:flex;gap:8px;flex-wrap:wrap}.companion-chat__persona-mismatch-banner__primary-action{padding:.45rem 1rem;border-radius:999px;border:1px solid color-mix(in srgb,var(--accent-warning,#f59e0b) 60%,transparent);background:color-mix(in srgb,var(--accent-warning,#f59e0b) 18%,transparent);color:color-mix(in srgb,var(--text-primary) 96%,transparent);cursor:pointer;font-size:.82rem;font-weight:600}.companion-chat__persona-mismatch-banner__primary-action:hover{background:color-mix(in srgb,var(--accent-warning,#f59e0b) 28%,transparent)}.companion-chat__persona-mismatch-banner__secondary-action{padding:.45rem 1rem;border-radius:999px;border:1px solid color-mix(in srgb,var(--text-primary) 25%,transparent);background:color-mix(in srgb,var(--text-primary) 6%,transparent);color:color-mix(in srgb,var(--text-primary) 85%,transparent);cursor:pointer;font-size:.82rem}.companion-chat__persona-mismatch-banner__secondary-action:hover:not(:disabled){background:color-mix(in srgb,var(--text-primary) 12%,transparent)}.companion-chat__persona-mismatch-banner__secondary-action:disabled{cursor:wait;opacity:.7}.companion-header__remix-btn{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:8px;border:1px solid var(--accent-blue,#5a8cff);background:color-mix(in srgb,var(--accent-blue,#5a8cff) 12%,transparent);color:var(--accent-blue,#5a8cff);font-size:13px;font-weight:600;cursor:pointer}.companion-header__remix-btn:disabled{opacity:.55;cursor:progress}.companion-header__remix-btn:focus-visible{outline:2px solid var(--accent-blue,#5a8cff);outline-offset:2px}.companion-header__provenance{font-size:12px;color:var(--text-secondary,#9aa3b2)}.companion-header__provenance a{color:var(--accent-blue,#5a8cff);text-decoration:none}.companion-header__provenance a:focus-visible,.companion-header__provenance a:hover{text-decoration:underline}