/* Cooper has a reserved lane on wide screens and his own header space on phones. */
.cooper-companion{position:fixed;left:0;top:0;width:112px;height:144px;z-index:50;pointer-events:none;isolation:isolate;contain:layout style;opacity:0;visibility:hidden;transition:opacity .5s}
.cooper-companion[data-ready]{opacity:1;visibility:visible}
.cooper-fallback{display:none;position:absolute;left:12%;top:5%;width:76%;height:auto;aspect-ratio:1;object-fit:contain;clip-path:polygon(15% 17%,19% 12%,29% 8%,36% 4%,42% 3%,48% 6%,51% 11%,61% 13%,69% 16%,78% 18%,86% 22%,90% 29%,90% 33%,93% 38%,92% 43%,90% 46%,87% 46%,85% 44%,84% 40%,80% 41%,78% 43%,74% 45%,73% 48%,73% 52%,75% 55%,74% 60%,76% 65%,79% 69%,79% 73%,81% 77%,80% 82%,77% 87%,72% 90%,65% 94%,59% 96%,50% 97%,39% 95%,28% 90%,21% 85%,18% 80%,18% 73%,21% 67%,22% 62%,24% 57%,24% 53%,25% 50%,24% 47%,25% 44%,25% 41%,27% 37%,29% 34%,27% 31%,27% 28%,25% 25%,24% 20%,20% 22%,17% 22%,15% 21%,14% 19%)}
.cooper-companion[data-fallback] .cooper-fallback{display:block}.cooper-companion[data-fallback] canvas{visibility:hidden}
.cooper-button{position:absolute;inset:0;padding:0;margin:0;border:0;background:transparent;cursor:pointer;pointer-events:auto;touch-action:pan-y;border-radius:40%;color:var(--ink);-webkit-tap-highlight-color:transparent}
.cooper-button:before{content:'';position:absolute;inset:7% 4% 14%;border-radius:50%;background:conic-gradient(from 25deg,#49edff,#5da8ff,#d83bff,#ff4964,#ff8a3b,#ffea3b,#49edff);filter:blur(7px);mask-image:radial-gradient(ellipse,#000 12%,#000a 42%,transparent 73%);opacity:.5;pointer-events:none;animation:cooper-aura 5.5s ease-in-out infinite}
.cooper-button canvas{position:relative;display:block;width:100%;height:100%;pointer-events:none;filter:drop-shadow(0 0 2px #49edff80)}
.cooper-button:hover:before,.cooper-button:focus-visible:before,.cooper-button[aria-expanded=true]:before{opacity:.6}
html[data-theme=light] .cooper-button:before{opacity:.29;filter:blur(6px) saturate(1.15)}
@keyframes cooper-aura{0%,100%{transform:scale(.93);filter:blur(7px) saturate(1)}50%{transform:scale(1.03);filter:blur(8px) saturate(1.22)}}
.cooper-button:focus-visible{outline:2px solid var(--secondary-ink);outline-offset:0}
.cooper-name{position:absolute;left:50%;bottom:2px;transform:translateX(-50%);padding:3px 6px;border-radius:12px;background:var(--bg);font:500 9px/1.2 var(--body);letter-spacing:.08em;color:var(--muted);white-space:nowrap;transition:opacity .2s}
.cooper-button:hover .cooper-name,.cooper-button[aria-expanded=true] .cooper-name{color:var(--ink)}
.cooper-trail{position:fixed;inset:0;width:100%;height:100%;z-index:49;pointer-events:none}
.cooper-bubble{position:fixed;inset:auto;margin:0;box-sizing:border-box;width:272px;max-width:calc(100vw - 32px);border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);padding:19px 36px 18px 20px;box-shadow:0 14px 50px #0004;overflow:visible;font:400 .875rem/1.55 var(--body);z-index:60}
.cooper-bubble:not([data-open]){display:none}
.cooper-bubble::backdrop{background:transparent;pointer-events:none}
.cooper-bubble[data-open]{animation:cooper-greeting .36s cubic-bezier(.22,.7,.25,1) both}
.cooper-bubble:before{content:'';position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;border:1px solid transparent;animation:cooper-edge .7s linear both}
.cooper-bubble:after{content:'';position:absolute;left:-22px;top:var(--cooper-arrow,35px);width:20px;height:1px;background:repeating-linear-gradient(90deg,var(--muted) 0 5px,transparent 5px 9px)}
.cooper-bubble strong{display:block;font:700 .8125rem/1.4 var(--body);letter-spacing:.04em;margin-bottom:7px}.cooper-bubble p{margin:0}
.cooper-close{position:absolute;right:3px;top:3px;width:36px;height:36px;border:0;background:transparent;color:var(--muted);font:22px/1 var(--body);cursor:pointer}.cooper-close:focus-visible{outline:2px solid var(--secondary-ink);border-radius:50%}
@keyframes cooper-greeting{from{opacity:0;transform:translateX(-8px) scale(.96)}to{opacity:1;transform:none}}
@keyframes cooper-edge{0%{border-color:#49edff;transform:translateX(-2px)}20%{border-color:#d83bff;transform:translateX(2px)}35%{border-color:#ff4964;transform:translateX(-1px)}50%{border-color:#ff8a3b}65%{border-color:#ffea3b}80%{border-color:#5da8ff}100%{border-color:transparent;transform:none}}
@media(min-width:1101px){
 .vision:has(.cooper-companion) :is(.vision-header,.vision-hero,.vision-work,.vision-contact,.vision-footer){width:min(1480px,calc(100% - 208px))}
 .cooper-button{right:12px}.cooper-button canvas{width:112px}
}
@media(max-width:1100px){
 .vision:has(.cooper-companion) .vision-header{position:sticky;top:0;z-index:55;width:100%;height:76px;margin:0;padding:0 20px;background:var(--bg);border-bottom:1px solid var(--line);box-sizing:border-box;isolation:isolate}
 .vision:has(.cooper-companion) .vision-header:after{display:none}
 .vision:has(.cooper-companion) .vision-signature{font-size:1rem;flex:none}
 .vision:has(.cooper-companion) .vision-signature>span{display:none}
 .vision:has(.cooper-companion) .theme-label{display:none}
 .vision:has(.cooper-companion) .theme-toggle{width:44px;height:44px;padding:0}
 .cooper-companion{width:82px;height:74px;z-index:56}
 .cooper-button canvas{filter:drop-shadow(0 0 1.5px #49edffa0)}
 .cooper-button:before{inset:7% 10% 14%;opacity:.42}
 .cooper-name{font-size:8px;bottom:-1px;padding:0 5px;letter-spacing:.03em}
 .cooper-trail{z-index:55}
 .cooper-bubble:after{left:var(--cooper-arrow,55px);top:-20px;width:1px;height:18px;background:repeating-linear-gradient(180deg,var(--muted) 0 5px,transparent 5px 9px)}
 .vision:has(.cooper-companion) [id]{scroll-margin-top:96px}
 .cooper-close{width:44px;height:44px;right:0;top:0}
}
@media(max-width:360px){.vision:has(.cooper-companion) .vision-header{padding-inline:14px}.vision:has(.cooper-companion) .vision-signature{font-size:.875rem}.vision:has(.cooper-companion) .header-actions{gap:4px}.vision:has(.cooper-companion) .social-links{gap:4px}}
@media(prefers-reduced-motion:reduce){.cooper-companion,.cooper-name{transition:none}.cooper-trail{display:none}.cooper-bubble[data-open],.cooper-bubble:before,.cooper-button:before{animation:none}}
