/* Coro, the EmptyCore robot guide. Hand-written; not overwritten by the build. */
.coro{display:block;width:100%;height:auto;overflow:visible}
.coro .c-bob{transform-box:view-box;transform-origin:410px 805px;animation:c-bob 3.4s ease-in-out infinite}
.coro .c-armL{transform-box:view-box;transform-origin:140px 625px}
.coro .c-armR{transform-box:view-box;transform-origin:680px 625px}
.coro.wave .c-armL{animation:c-wave 2.6s ease-in-out infinite}
.coro .c-eyes{transform-box:view-box;transform-origin:410px 400px;animation:c-blink 5.2s infinite}
.coro .c-spark{animation:c-spark 1.8s steps(2,jump-none) infinite}
.coro .c-tab{animation:c-led 2.6s ease-in-out infinite}
.coro .c-stars{opacity:0;transform-box:view-box;transform-origin:410px 450px}
.coro.nod .c-bob{animation:c-hop .38s ease-out}
.coro.yay .c-bob{animation:c-jump .55s ease-out 3}
.coro.yay .c-armL{animation:c-wave .5s ease-in-out 5}
.coro.yay .c-armR{animation:c-up .5s ease-out forwards}
.coro.yay .c-stars{animation:c-stars 2.2s ease-out forwards}
.coro.yay .c-spark{animation-duration:.4s}
@keyframes c-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
@keyframes c-wave{0%,60%,100%{transform:rotate(0)}15%,45%{transform:rotate(-16deg)}30%{transform:rotate(10deg)}}
@keyframes c-blink{0%,93%,100%{transform:scaleY(1)}95.5%{transform:scaleY(.08)}}
@keyframes c-spark{0%{opacity:1}50%{opacity:.25}}
@keyframes c-led{0%,100%{fill:#F26A1C}50%{fill:#FF9A55}}
@keyframes c-hop{40%{transform:translateY(-34px)}}
@keyframes c-jump{0%,100%{transform:translateY(0)}40%{transform:translateY(-70px) rotate(-3deg)}}
@keyframes c-up{to{transform:rotate(-150deg)}}
@keyframes c-stars{0%{opacity:0;transform:scale(.4)}25%{opacity:1;transform:scale(1.05)}80%{opacity:1}100%{opacity:.9;transform:scale(1)}}

/* speech bubble */
.coro-say{position:relative;background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:10px 14px;font-size:.92rem;line-height:1.4;color:var(--ink);box-shadow:0 6px 18px rgba(27,42,75,.08)}
.coro-say b{color:var(--navy)}

/* floating companion (bottom-left, peeks up from the edge) */
.coro-buddy{position:fixed;left:12px;bottom:0;z-index:45;pointer-events:none}
.coro-buddy>button{pointer-events:auto;display:block;width:70px;background:none;border:0;padding:0;cursor:pointer;transform:translateY(105%);transition:transform .6s var(--ease-shuttle,cubic-bezier(.2,.8,.2,1))}
.coro-buddy.peek>button{transform:translateY(42%)}
.coro-buddy.up>button,.coro-buddy>button:hover,.coro-buddy>button:focus-visible{transform:translateY(4%)}
.coro-buddy>button:focus-visible{outline:3px solid var(--orange);outline-offset:3px;border-radius:12px}
.coro-buddy .coro-say{pointer-events:auto;position:absolute;left:4px;bottom:86px;width:min(270px,calc(100vw - 32px));opacity:0;transform:translateY(8px) scale(.96);transform-origin:20px 100%;transition:opacity .25s,transform .25s;visibility:hidden}
.coro-buddy.open .coro-say{opacity:1;transform:none;visibility:visible}
.coro-say.tail::after{content:"";position:absolute;left:26px;bottom:-8px;width:14px;height:14px;background:#fff;border-right:1.5px solid var(--line);border-bottom:1.5px solid var(--line);transform:rotate(45deg)}
.coro-say .x{position:absolute;top:4px;right:6px;border:0;background:none;font-size:1.1rem;line-height:1;cursor:pointer;color:var(--muted);padding:4px}
.coro-say a.go{display:inline-block;margin-top:6px;font-weight:600}
.coro-buddy.gone{display:none}
@media(max-width:600px){.coro-buddy>button{width:54px}.coro-buddy .coro-say{bottom:68px}}
@media print{.coro-buddy{display:none}}

/* hero companion */
.wrap.has-coro{position:relative}
.hero .hero-coro{position:absolute;right:24px;bottom:-34px;width:150px}
.hero .hero-coro .coro-say{position:absolute;right:120px;top:-6px;width:210px}
@media(min-width:861px){.wrap.has-coro>*:not(.hero-coro){max-width:calc(100% - 330px)}}
@media(max-width:860px){.hero .hero-coro{position:relative;right:auto;bottom:auto;display:flex;align-items:center;gap:12px;width:auto;margin-top:18px}.hero .hero-coro svg{width:84px;flex:0 0 84px}.hero .hero-coro .coro-say{position:static;width:auto}}
/* home: Coro standing on the circuit board */
.hero-art{position:relative}
.hero-art .art-coro{position:absolute;right:-6px;bottom:22px;width:84px;cursor:pointer}
@media(max-width:600px){.hero-art .art-coro{width:62px;bottom:30px}}
/* home books teaser */
.book .cover-wrap{position:relative;justify-self:center}
.book .cover-wrap .coro{position:absolute;right:-38px;bottom:-14px;width:96px}

/* course finder guide */
.wz-guide{display:flex;align-items:flex-end;gap:12px;margin:0 0 14px}
.wz-guide .coro{width:78px;flex:0 0 78px}
.wz-guide .coro-say{flex:1;margin-bottom:12px}
.wz-guide .coro-say::after{content:"";position:absolute;left:-8px;bottom:16px;width:14px;height:14px;background:#fff;border-left:1.5px solid var(--line);border-bottom:1.5px solid var(--line);transform:rotate(45deg)}
@media(max-width:600px){.wz-guide .coro{width:58px;flex-basis:58px}.wz-guide .coro-say{font-size:.86rem}}

/* career path: tip + marker riding the map */
.pm-tip{display:flex;align-items:center;gap:12px;margin:0 0 14px}
.pm-tip .coro{width:58px;flex:0 0 58px}
.pm-coro{transition:transform .7s var(--ease-shuttle,cubic-bezier(.2,.8,.2,1)),opacity .3s;opacity:0;pointer-events:none}
.pm-coro.on{opacity:1}

/* 404 / empty states */
.coro-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:30px 0}
.coro-empty .coro{width:160px}

@media (prefers-reduced-motion: reduce){
  .coro *,.coro{animation:none!important}
  .coro.yay .c-stars{opacity:1}
  .coro-buddy>button,.coro-buddy .coro-say,.pm-coro{transition:none!important}
}
/* ---- Coro on dark backgrounds (.coro--on-dark) ----
   Light backgrounds keep the plain navy/orange Coro. On navy sections (page heroes, home circuit board,
   career map, dark footer/CTA under the floating buddy) he gets a white sticker outline, glowing LED eyes,
   a glowing tab LED and light sparks so his navy head never disappears into the background. */
.coro{transition:filter .3s}
.coro.coro--on-dark{filter:drop-shadow(1.6px 0 0 #fff) drop-shadow(-1.6px 0 0 #fff) drop-shadow(0 1.6px 0 #fff) drop-shadow(0 -1.6px 0 #fff) drop-shadow(0 6px 12px rgba(0,0,0,.35))}
.coro.coro--on-dark .c-eyes path[fill="#FFFFFF"]{filter:drop-shadow(0 0 22px rgba(255,255,255,.95)) drop-shadow(0 0 46px rgba(255,214,170,.7))}
.coro.coro--on-dark .c-tab{filter:drop-shadow(0 0 26px rgba(255,140,60,.95))}
.coro.coro--on-dark .c-spark path{fill:#FFC08F}
.coro.coro--on-dark .c-stars path{fill:#FFB37A}
/* bubbles that sit on navy: crisp white card, no grey border, deeper shadow */
.hero .coro-say,.coro-buddy.on-dark .coro-say{border-color:#fff;box-shadow:0 10px 28px rgba(0,0,0,.35)}
.coro-buddy.on-dark .coro-say.tail::after{border-color:#fff}
.pm-coro .coro{width:58px}
@media (prefers-reduced-motion: reduce){.coro{transition:none!important}}
