/* One artwork and renderer for every web and companion surface. */
:root{--cortex-hue:-35deg;--cortex-accent:var(--b1x-accent,#a6d0b8)}
:root[data-palette=paper]{--cortex-hue:185deg}
:root[data-palette=slate]{--cortex-hue:75deg}
:root[data-theme] body img[src*="ai-brain-neural-core"],
:root[data-theme] body img[src^="/shared/cortex.svg"],
:root[data-theme] #shell.unified-shell img[src*="ai-brain-neural-core"],
:root[data-theme] .cortex-companion .cortex-control img {
 filter:hue-rotate(var(--cortex-hue)) drop-shadow(0 0 7px color-mix(in srgb,var(--cortex-accent) 65%,transparent))!important;
 opacity:1!important;mix-blend-mode:normal!important;object-fit:contain!important;
 border-radius:50%;transform:none!important;animation:cortex-heartbeat-glow var(--cortex-tempo,1.8s) ease-in-out infinite!important;
}
:root[data-theme] #shell.unified-shell #richard-launcher,
:root[data-theme] #shell.unified-shell .companion-avatar-wrap {
 background:transparent!important;filter:none!important;
 border-color:color-mix(in srgb,var(--cortex-accent) 40%,transparent)!important;
 box-shadow:0 0 16px color-mix(in srgb,var(--cortex-accent) 45%,transparent),0 0 34px color-mix(in srgb,var(--cortex-accent) 25%,transparent)!important;
}
:root[data-theme] #shell.unified-shell #richard-launcher::before,
:root[data-theme] #shell.unified-shell #richard-launcher::after {box-shadow:none!important;border-color:color-mix(in srgb,var(--cortex-accent) 24%,transparent)!important}
:root[data-theme] .cortex-aura {background:radial-gradient(ellipse,color-mix(in srgb,var(--cortex-accent) 30%,transparent),transparent 68%)!important}
:root[data-theme] .cortex-companion .cortex-control::before {background:transparent!important;border:0!important;box-shadow:none!important}
:root[data-cortex-state=thinking]{--cortex-tempo:1.2s}
:root[data-cortex-state=acting]{--cortex-tempo:.95s}
:root[data-cortex-state=listening]{--cortex-tempo:2.4s}
:root[data-cortex-state=speaking]{--cortex-tempo:1.1s}
:root[data-cortex-state=interrupted]{--cortex-tempo:1.4s;--cortex-accent:#e9ba61}
:root[data-cortex-state=asleep],:root[data-cortex-state=disconnected]{--cortex-tempo:4s}
:root[data-cortex-state=approval]{--cortex-tempo:3s;--cortex-accent:#e9ba61}
:root[data-cortex-state=error]{--cortex-tempo:3s;--cortex-accent:#df807a}
@keyframes cortex-heartbeat-glow{
 0%,46%,100%{box-shadow:0 0 12px 1px color-mix(in srgb,var(--cortex-accent) 35%,transparent),0 0 34px 3px color-mix(in srgb,var(--cortex-accent) 18%,transparent)}
 12%{box-shadow:0 0 14px 2px #ffffffb0,0 0 30px 7px color-mix(in srgb,var(--cortex-accent) 85%,transparent),0 0 64px 18px color-mix(in srgb,var(--cortex-accent) 46%,transparent),0 0 96px 26px color-mix(in srgb,var(--cortex-accent) 18%,transparent)}
 24%{box-shadow:0 0 18px 2px color-mix(in srgb,var(--cortex-accent) 48%,transparent),0 0 42px 8px color-mix(in srgb,var(--cortex-accent) 24%,transparent)}
 34%{box-shadow:0 0 12px 1px #ffffff80,0 0 25px 5px color-mix(in srgb,var(--cortex-accent) 72%,transparent),0 0 54px 14px color-mix(in srgb,var(--cortex-accent) 38%,transparent),0 0 84px 20px color-mix(in srgb,var(--cortex-accent) 14%,transparent)}
}
@media(prefers-reduced-motion:reduce){:root[data-theme] body img[src*="ai-brain-neural-core"],:root[data-theme] #shell.unified-shell img[src*="ai-brain-neural-core"],:root[data-theme] .cortex-companion .cortex-control img,:root[data-theme] body img[src^="/shared/cortex.svg"]{animation:none!important}}

/* A single circular orb; its controls orbit the perimeter. */
:root[data-theme] .cortex-companion.cortex-first {
 position:fixed;z-index:2147483000;isolation:isolate;
 width:min(360px,calc(100vw - 24px));min-height:0;max-height:calc(100dvh - 24px);
 padding:12px;margin:auto;overflow:visible;border:0!important;border-radius:0;
 background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;
}
:root[data-theme] .cortex-orbit-controls {position:relative;z-index:2;width:100%;height:310px;margin:0 auto;isolation:isolate;overflow:visible}
:root[data-theme] .cortex-first .cortex-control {
 position:absolute;z-index:1;isolation:isolate;overflow:visible;inset:15px 0 auto;width:280px;height:280px;min-height:0;margin:0 auto!important;padding:0!important;
 border:0!important;outline:0!important;border-radius:50%;background:transparent!important;box-shadow:none;filter:none;animation:none!important;
}
:root[data-theme] .cortex-first .cortex-control img {position:relative;z-index:1;display:block;width:100%;height:100%;margin:0;border-radius:50%;clip-path:circle(50%);transform:none!important}
:root[data-theme] .cortex-first .cortex-control::after {
 content:'';display:block!important;position:absolute;inset:-38px;z-index:0;border-radius:46% 54% 49% 51%;pointer-events:none;
 background:radial-gradient(ellipse at 25% 22%,var(--cortex-accent),transparent 38%),conic-gradient(from 20deg,transparent 0deg,var(--cortex-accent) 48deg,transparent 105deg,var(--cortex-accent) 165deg,transparent 210deg,var(--cortex-accent) 260deg,transparent 325deg);
 mask-image:radial-gradient(circle,transparent 49%,#0009 57%,#000 62%,transparent 74%);
 filter:blur(10px);opacity:.65;animation:cortex-mist-drift 24s linear infinite;
}
@keyframes cortex-mist-drift {to{transform:rotate(360deg)}}
:root:is([data-cortex-state=listening],[data-cortex-state=thinking],[data-cortex-state=speaking],[data-cortex-state=acting]) .cortex-first .cortex-control::after {opacity:.85;animation-duration:12s}
@media(prefers-reduced-motion:reduce){:root[data-theme] .cortex-first .cortex-control::after{animation:none!important}}
:root[data-theme] .cortex-first .cortex-quickbar {display:contents;margin:0}
:root[data-theme] .cortex-first .cortex-orbit-controls button:not(.cortex-control) {
 position:absolute;z-index:3;width:42px;height:42px;min-width:42px;min-height:42px;padding:0;margin:0;
 display:grid;place-items:center;isolation:isolate;border:0!important;
 border-radius:50%;background:transparent!important;color:#edf5f1;box-shadow:none!important;font-size:16px;
}
:root[data-theme] .cortex-first .cortex-orbit-controls button:not(.cortex-control)::after {
 content:'';position:absolute;inset:2px;width:auto;height:auto;z-index:-1;border-radius:50%;pointer-events:none;
 transform:rotate(var(--surface-angle,0deg)) scaleX(.78) rotate(calc(-1 * var(--surface-angle,0deg)));
 background:linear-gradient(145deg,#01070bdd,color-mix(in srgb,var(--cortex-accent) 18%,#0a1720) 72%,#ffffff18);
 box-shadow:inset 1px 3px 5px #000b,inset -1px -1px 2px #ffffff32,0 1px 1px #ffffff29;
 border:1px solid color-mix(in srgb,var(--cortex-accent) 24%,transparent);
}
:root[data-theme] .cortex-first .cortex-setup-toggle.attention::before {content:'';position:absolute;top:6px;right:7px;width:4px;height:4px;border-radius:50%;background:#f4b24c;box-shadow:0 0 5px #f4b24c}
:root[data-theme] .cortex-first .cortex-orbit-controls button:not(.cortex-control):is(:hover,:focus-visible)::after {border-color:var(--cortex-accent);box-shadow:inset 1px 2px 4px #000b,0 0 7px color-mix(in srgb,var(--cortex-accent) 50%,transparent)}
:root[data-theme] .cortex-first .cortex-orbit-controls .cortex-setup-toggle {left:calc(50% - 86px);top:51px;--surface-angle:-128deg}
:root[data-theme] .cortex-first .cortex-orbit-controls .dialog-close {left:calc(50% + 44px);right:auto;top:51px;--surface-angle:-52deg}
:root[data-theme] .cortex-first .cortex-quickbar .cortex-quick:first-child {left:calc(50% - 91px);top:212px;--surface-angle:132deg}
:root[data-theme] .cortex-first .cortex-quickbar .cortex-quick:last-child {left:calc(50% + 49px);top:212px;--surface-angle:48deg}
:root[data-theme] .cortex-first .cortex-orbit-controls .cortex-audio-action {left:calc(50% - 21px);top:245px;font-size:0!important;color:#edf5f1;--surface-angle:90deg}
:root[data-theme] .cortex-first .cortex-audio-action::before {content:'♫';font-size:19px}
:root[data-theme] .cortex-first>h2,:root[data-theme] .cortex-first>.companion-voice-state {
 position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;
}
:root[data-theme] .cortex-first :is(.cortex-setup-panel,.cortex-text,.companion-reply):not([hidden]) {
 position:relative;background:var(--b1x-solid-strong,var(--panel));color:var(--text);padding:16px;border-radius:16px;margin:10px 0 0;
 max-height:max(120px,calc(100dvh - 370px));overflow:auto;overscroll-behavior:contain;
}
:root[data-theme] .cortex-first .cortex-text[hidden] {display:none!important}
/* Full viewport light is translucent and never intercepts clicks or scrolling. */
.cortex-screen-glow {position:fixed;inset:0;z-index:9998;pointer-events:none;user-select:none;
 background:radial-gradient(ellipse at 50% 48%,color-mix(in srgb,var(--cortex-accent) 25%,transparent) 0%,color-mix(in srgb,var(--cortex-accent) 12%,transparent) 42%,color-mix(in srgb,var(--cortex-accent) 5%,transparent) 100%);
 animation:cortex-screen-heartbeat var(--cortex-tempo,1.8s) ease-in-out infinite;}
.cortex-dialog-open .cortex-screen-glow {visibility:hidden}
:root[data-theme] .cortex-companion::backdrop {
 backdrop-filter:none!important;
 background:radial-gradient(ellipse at 50% 48%,color-mix(in srgb,var(--cortex-accent) 42%,transparent),color-mix(in srgb,var(--cortex-accent) 20%,transparent) 50%,color-mix(in srgb,var(--cortex-accent) 9%,transparent));
 animation:cortex-screen-heartbeat var(--cortex-tempo,1.8s) ease-in-out infinite;
}
:root[data-theme] body:has(.cortex-companion[open])::after {display:none!important}
@keyframes cortex-screen-heartbeat {0%,48%,100%{opacity:.28}12%{opacity:1}24%{opacity:.48}34%{opacity:.82}}
@media(prefers-reduced-motion:reduce){.cortex-screen-glow,:root[data-theme] .cortex-companion::backdrop {animation:none!important;opacity:.35}}
@media(forced-colors:active){.cortex-screen-glow{display:none}.cortex-companion::backdrop{background:transparent!important}:root[data-theme] .cortex-first .cortex-orbit-controls button{border:1px solid ButtonText!important}}

.cortex-screen-glow,:root[data-theme] .cortex-companion::backdrop {background:radial-gradient(ellipse at var(--cortex-light-x,50%) var(--cortex-light-y,48%),color-mix(in srgb,var(--cortex-accent) 35%,transparent),color-mix(in srgb,var(--cortex-accent) 15%,transparent) 50%,color-mix(in srgb,var(--cortex-accent) 6%,transparent))}
.cortex-guidance-hand{position:fixed;width:42px;height:48px;z-index:2147483000;pointer-events:none;color:var(--cortex-accent);filter:drop-shadow(0 0 8px currentColor);animation:cortex-screen-heartbeat 1.8s ease-in-out infinite;transition:left .5s ease,top .5s ease}
.cortex-guidance-hand[data-state=error]{color:#df807a}.cortex-guidance-hand[data-state=approval]{color:#e9ba61}.cortex-guidance-hand[data-state=complete]{color:#86d9b4}
.cortex-guidance-note{position:fixed;z-index:2147483001;max-width:248px;padding:12px 32px 12px 14px;border-radius:12px;background:var(--b1x-solid-strong,#152320);color:var(--text,#edf1ee);box-shadow:0 5px 24px #0003;font-size:12px;line-height:1.5;transition:left .5s ease,top .5s ease}
.cortex-guidance-note button{position:absolute;right:4px;top:4px;width:28px;height:28px;padding:0;border:0;background:transparent;color:inherit}
.cortex-guidance-hand[hidden],.cortex-guidance-note[hidden]{display:none!important}
:root[data-cortex-state=thinking] .cortex-first .cortex-control,:root[data-cortex-state=listening] .cortex-first .cortex-control,:root[data-cortex-state=speaking] .cortex-first .cortex-control {scale:var(--cortex-voice-scale,1.03)}
:root[data-cortex-state=interrupted] .cortex-first .cortex-control {scale:.98}
:root[data-cortex-state=approval] .cortex-first .cortex-control,:root[data-cortex-state=error] .cortex-first .cortex-control {scale:1.06}
:root[data-theme] .cortex-first .cortex-control {transition:scale .65s ease}
@media(prefers-reduced-motion:reduce){.cortex-guidance-hand,.cortex-guidance-note,:root[data-theme] .cortex-first .cortex-control {animation:none!important;transition:none!important}}
:root[data-theme] .cortex-orbit-controls {transition:translate .7s cubic-bezier(.2,.8,.2,1)}
@media(prefers-reduced-motion:reduce){:root[data-theme] .cortex-orbit-controls{transition:none}}

/* Idle is quiet. Full-screen heartbeat is reserved for actual activity. */
:root:not([data-cortex-state=listening]):not([data-cortex-state=thinking]):not([data-cortex-state=speaking]):not([data-cortex-state=acting]) .cortex-screen-glow {opacity:0;animation:none}
:root[data-theme]:not([data-cortex-state=listening]):not([data-cortex-state=thinking]):not([data-cortex-state=speaking]):not([data-cortex-state=acting]) .cortex-companion::backdrop {animation:none;opacity:.12}
:root[data-theme]:is([data-cortex-state=ready],[data-cortex-state=disconnected],[data-cortex-state=asleep],[data-cortex-state=complete]) body img[src*="ai-brain-neural-core"],
:root[data-theme]:is([data-cortex-state=ready],[data-cortex-state=disconnected],[data-cortex-state=asleep],[data-cortex-state=complete]) #shell.unified-shell img[src*="ai-brain-neural-core"],
:root[data-theme]:is([data-cortex-state=ready],[data-cortex-state=disconnected],[data-cortex-state=asleep],[data-cortex-state=complete]) .cortex-companion .cortex-control img,
:root[data-theme]:is([data-cortex-state=ready],[data-cortex-state=disconnected],[data-cortex-state=asleep],[data-cortex-state=complete]) body img[src^="/shared/cortex.svg"] {
 animation:none!important;box-shadow:none!important;filter:hue-rotate(var(--cortex-hue)) drop-shadow(0 0 2px color-mix(in srgb,var(--cortex-accent) 25%,transparent))!important;
}
:root[data-theme]:is([data-cortex-state=ready],[data-cortex-state=disconnected],[data-cortex-state=asleep],[data-cortex-state=complete]) #shell.unified-shell #richard-launcher {box-shadow:0 0 6px color-mix(in srgb,var(--cortex-accent) 15%,transparent)!important}

/* Transparent space around the floating orb leaves workspace controls usable. */
:root[data-theme] .cortex-companion.cortex-first {pointer-events:none}
:root[data-theme] .cortex-companion::backdrop {pointer-events:none}
:root[data-theme] .cortex-first :is(button,.cortex-setup-panel,.cortex-text,.companion-reply) {pointer-events:auto}
:root[data-theme] .cortex-first .cortex-control {touch-action:none;user-select:none;cursor:grab}
:root[data-theme] .cortex-dragging .cortex-control {cursor:grabbing}
:root[data-theme] .cortex-dragging .cortex-orbit-controls {transition:none}
/* Screen boundary is steady. Only the orb rim beats. */
.cortex-screen-glow,:root[data-theme] .cortex-companion::backdrop {
 background:transparent;animation:none!important;opacity:1;
 box-shadow:inset 0 0 10px 2px color-mix(in srgb,var(--cortex-accent) 80%,transparent),inset 0 0 40px 8px color-mix(in srgb,var(--cortex-accent) 48%,transparent),inset 0 0 100px 18px color-mix(in srgb,var(--cortex-accent) 20%,transparent);
}
:root[data-theme]:not([data-cortex-state=listening]):not([data-cortex-state=thinking]):not([data-cortex-state=speaking]):not([data-cortex-state=acting]) .cortex-companion::backdrop {box-shadow:none;opacity:0}
:root[data-theme] .cortex-companion.cortex-first .cortex-control img {
 animation:cortex-rim-heartbeat var(--cortex-tempo,1.8s) ease-in-out infinite!important;
 filter:hue-rotate(var(--cortex-hue))!important;
}
@keyframes cortex-rim-heartbeat {
 0%,48%,100%{box-shadow:0 0 10px 2px color-mix(in srgb,var(--cortex-accent) 65%,transparent),0 0 30px 5px color-mix(in srgb,var(--cortex-accent) 32%,transparent)}
 12%{box-shadow:0 0 14px 3px color-mix(in srgb,var(--cortex-accent) 80%,white),0 0 var(--cortex-halo-size,42px) 8px color-mix(in srgb,var(--cortex-accent) 65%,transparent)}
 24%{box-shadow:0 0 11px 2px color-mix(in srgb,var(--cortex-accent) 65%,transparent),0 0 32px 5px color-mix(in srgb,var(--cortex-accent) 38%,transparent)}
 34%{box-shadow:0 0 13px 3px color-mix(in srgb,var(--cortex-accent) 85%,transparent),0 0 var(--cortex-halo-size,42px) 7px color-mix(in srgb,var(--cortex-accent) 55%,transparent)}
}
:root:is([data-cortex-state=listening],[data-cortex-state=thinking],[data-cortex-state=speaking],[data-cortex-state=acting]) {--cortex-halo-size:64px}
/* Clip artwork inside its circle, not its outward light. */
:root[data-theme] .cortex-first .cortex-control img {clip-path:none}
@media(prefers-reduced-motion:reduce){:root[data-theme] .cortex-companion.cortex-first .cortex-control img{animation:none!important;box-shadow:0 0 12px color-mix(in srgb,var(--cortex-accent) 40%,transparent)!important}}
/* Apply the halo outside the color-filtered artwork so its theme hue stays accurate. */
:root[data-theme] .cortex-companion.cortex-first .cortex-control {animation:cortex-rim-heartbeat var(--cortex-tempo,1.8s) ease-in-out infinite!important;filter:none!important}
:root[data-theme] .cortex-companion.cortex-first .cortex-control img {animation:none!important;box-shadow:none!important}
@media(prefers-reduced-motion:reduce){:root[data-theme] .cortex-companion.cortex-first .cortex-control{animation:none!important;box-shadow:0 0 12px color-mix(in srgb,var(--cortex-accent) 40%,transparent)!important}}
