/* Scoped mascot styles. Size and motion tuning live here. */
#ai-fab.robot-launcher{
 --robot-size:148px;position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));
 width:var(--robot-size)!important;height:auto!important;padding:0!important;display:block!important;
 border:0!important;border-radius:24px;background:transparent!important;box-shadow:none!important;
 transform:none!important;overflow:visible!important;isolation:isolate;animation:robot-arrive .8s cubic-bezier(.2,.8,.2,1) both;
 touch-action:manipulation;-webkit-tap-highlight-color:transparent;
}
#ai-fab.robot-launcher:focus-visible{outline:2px solid #168bd1;outline-offset:5px}
.assistant-robot{display:block;width:100%;height:auto;overflow:visible;pointer-events:none}
.robot-launcher .assistant-robot{filter:drop-shadow(0 5px 5px #12263a18)}
.robot-bubble{position:absolute;right:calc(100% - 20px);bottom:72%;width:191px;padding:13px 15px;
 border:1px solid #dde6ec;border-radius:15px 15px 3px 15px;background:#ffffffed;color:#273748;
 font-family:var(--ui-sans,Arial,sans-serif);font-size:12px;line-height:1.5;font-weight:500;text-align:left;
 box-shadow:0 8px 28px #1a334614;backdrop-filter:blur(10px);opacity:0;transform:translateY(5px);
 transition:opacity .25s,transform .25s;pointer-events:none;text-transform:none;letter-spacing:0;
}
.robot-dock .robot-bubble{opacity:1;transform:none;width:190px;padding:11px 13px;border:1px solid #222;border-radius:18px 18px 3px 18px;background:#fffefa;box-shadow:5px 6px 0 #202020;bottom:64%;pointer-events:auto}
.robot-bubble::after{content:'';position:absolute;right:-8px;bottom:16px;width:15px;height:15px;background:#fffefa;transform:rotate(45deg)}
.robot-bubble-label,.robot-bubble-cta{display:block;color:#e24c43;font:10px/1.5 monospace;letter-spacing:2px}
.robot-bubble-text{display:block;min-height:40px;padding-top:6px;color:#171717;font-size:13px;line-height:1.4}
.robot-bubble-text::after{content:'';display:inline-block;height:1em;border-right:1px solid currentColor;vertical-align:-2px;margin-left:2px;animation:robot-caret 1s steps(1) infinite}
.robot-bubble-cta{border-top:1px dashed #d6cec7;padding-top:8px;margin-top:8px;letter-spacing:1px}
@keyframes robot-caret{50%{opacity:0}}
@media(max-width:600px){.robot-dock .robot-bubble{width:min(165px,calc(100vw - 105px));padding:11px 13px}.robot-bubble-text{font-size:13px;min-height:46px}}
@media(prefers-reduced-motion:reduce){.robot-bubble-text::after{animation:none;display:none}}
.r-float{animation:robot-float 4.8s ease-in-out infinite;transform-origin:155px 235px}
.r-shadow{animation:robot-shadow 4.8s ease-in-out infinite;transform-origin:160px 448px}
.r-body{animation:robot-breathe 5.6s ease-in-out infinite;transform-origin:159px 310px}
.r-head{transform-origin:153px 207px;transform:translate(var(--head-x,0px),var(--head-y,0px)) rotate(var(--head-turn,0deg))}
.r-pupil{transform:translate(var(--look-x,0px),var(--look-y,0px))}
.r-eye-left{transform-origin:119px 132px}.r-eye-right{transform-origin:183px 135px}
.is-blinking .r-eye{animation:robot-blink .17s ease-in-out}
.r-arm-wave{transform-origin:106px 236px}
.is-waving .r-arm-wave{animation:robot-wave 1.6s ease-in-out}
.r-brows{transition:transform .35s;transform-origin:153px 112px}
.r-smile{transform-origin:153px 191px;transition:transform .3s}
.robot-launcher:hover .r-brows,[data-mood="attentive"] .r-brows{transform:translateY(-2px)}
[data-mood="cheerful"] .r-smile{transform:scale(1.13,1.35)}
[data-mood="cheerful"] .r-brows{transform:translateY(-3px)}
.r-chest{animation:robot-glow 4s ease-in-out infinite}
.r-thinking{opacity:0;transition:opacity .25s}
[data-mood="thinking"] .r-thinking{opacity:1}
[data-mood="thinking"] .r-thinking circle{animation:robot-think 1.2s ease-in-out infinite}
[data-mood="thinking"] .r-thinking circle:nth-child(2){animation-delay:.16s}
[data-mood="thinking"] .r-thinking circle:nth-child(3){animation-delay:.32s}
[data-mood="thinking"] .r-chest{animation-duration:1.2s}
[data-mood="thinking"] .r-brows{transform:rotate(-3deg)}
.robot-chat-avatar{width:54px!important;height:58px!important;overflow:visible!important;background:transparent!important;border:none!important;border-radius:0!important;flex:0 0 54px}
.robot-chat-avatar .assistant-robot{height:58px;width:54px;stroke:none;stroke-width:1}
.robot-chat-avatar .r-float,.robot-chat-avatar .r-body{animation:none}
.robot-chat-avatar .r-body,.robot-chat-avatar .r-shadow{display:none}
.robot-chat-avatar .r-thinking{transform:translate(-9px,20px)}
.robot-launcher.is-chat-open{visibility:hidden;pointer-events:none}

.robot-paused *{animation-play-state:paused!important}
@keyframes robot-arrive{from{opacity:0;translate:0 24px}to{opacity:1;translate:0 0}}
@keyframes robot-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes robot-shadow{0%,100%{transform:scaleX(1);opacity:.14}50%{transform:scaleX(.86);opacity:.08}}
@keyframes robot-breathe{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.008)}}
@keyframes robot-blink{0%,100%{transform:scaleY(1)}45%,60%{transform:scaleY(.05)}}
@keyframes robot-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(12deg)}40%,80%{transform:rotate(-8deg)}}
@keyframes robot-glow{0%,100%{opacity:.85}50%{opacity:1}}
@keyframes robot-think{0%,100%{opacity:.25}50%{opacity:1}}
@media(max-width:900px){#ai-fab.robot-launcher{--robot-size:120px}.robot-bubble{font-size:11px;width:175px}}
@media(max-width:600px){#ai-fab.robot-launcher{--robot-size:88px;right:max(8px,env(safe-area-inset-right));bottom:max(7px,env(safe-area-inset-bottom))}.robot-bubble{width:166px;padding:10px 12px;right:calc(100% - 13px);bottom:62%;font-size:11px}.robot-chat-avatar{width:46px!important;flex-basis:46px}.robot-chat-avatar .assistant-robot{width:46px}}
@media(max-height:480px){#ai-fab.robot-launcher{--robot-size:76px}.robot-bubble{bottom:38%}}
@media(prefers-reduced-motion:reduce){#ai-fab.robot-launcher,.assistant-robot *{animation:none!important;transition:none!important}.r-head,.r-pupil{transform:none!important}.robot-bubble{transition:none}}

.robot-dock{--robot-size:148px;position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));width:var(--robot-size);height:calc(var(--robot-size)*455/300);z-index:999;pointer-events:none}
.robot-dock #ai-fab{pointer-events:auto}
.robot-bubble[hidden]{display:none!important}
.robot-dock .robot-bubble{transition:opacity .35s ease,transform .35s ease}
.robot-dock .robot-bubble.is-dismissed{opacity:0;transform:translateY(8px);pointer-events:none}
@media(prefers-reduced-motion:reduce){.robot-dock .robot-bubble{transition:none}}
.robot-bubble-close{position:absolute;right:4px;top:3px;width:28px;height:28px;padding:0;border:0;background:transparent;color:#777;font:20px/28px Arial;cursor:pointer}
.robot-bubble-close:hover{color:#111}
.robot-bubble-close:focus-visible,.robot-bubble-cta:focus-visible{outline:2px solid #222;outline-offset:2px}
.robot-bubble-label{padding-right:20px;font-size:9px}
button.robot-bubble-cta{background:none;border:0;border-top:1px dashed #d6cec7;width:100%;text-align:left;cursor:pointer;padding-left:0;padding-right:0}
@media(max-width:900px){.robot-dock{--robot-size:120px}}
@media(max-width:600px){.robot-dock{--robot-size:88px;right:max(8px,env(safe-area-inset-right));bottom:max(7px,env(safe-area-inset-bottom))}}
@media(max-height:480px){.robot-dock{--robot-size:76px}}

.r-jet{transform-origin:108px 396px;animation:robot-thrust .65s ease-in-out infinite alternate}
.r-jet-right{transform-origin:208px 396px;animation-delay:-.32s;animation-duration:.73s}
@keyframes robot-thrust{0%{transform:scale(.93,.75);opacity:.75}55%{transform:scale(1.05,1);opacity:1}100%{transform:scale(.97,.86);opacity:.9}}
@media(prefers-reduced-motion:reduce){.r-jet{animation:none;opacity:.65}}

/* Hero docking (assets/robot-hero-dock.js): robot stands beside the hero CTAs, then flies to the corner */
.robot-dock #ai-fab.robot-launcher{position:absolute;right:0;bottom:0}
.robot-dock{transform-origin:0 100%;will-change:transform;transition:transform .9s cubic-bezier(.45,0,.2,1),opacity .35s ease}
.robot-dock.no-anim{transition:none}
.robot-dock.in-hero:not(.is-flying){transition:opacity .35s ease}
.robot-dock.in-hero .robot-bubble{opacity:0!important;visibility:hidden;pointer-events:none}
.robot-dock.hero-hidden{opacity:0;pointer-events:none}
.robot-dock.hero-hidden *{pointer-events:none!important}
.robot-hero-tag{position:absolute;right:calc(100% - 6px);bottom:46%;display:flex;flex-direction:column;gap:7px;width:265px;padding:16px 20px;background:#fffefa;color:#171717;border:1.5px solid #171717;border-radius:22px 22px 4px 22px;box-shadow:6px 6px 0 #171717;text-align:left;opacity:0;transform:translateX(10px) scale(.96);transform-origin:right bottom;transition:opacity .35s ease,transform .35s ease;pointer-events:none}
.robot-hero-tag::after{content:'';position:absolute;right:-9px;bottom:18px;width:15px;height:15px;background:#fffefa;border-top:1.5px solid #171717;border-right:1.5px solid #171717;transform:rotate(45deg)}
.rht-k{display:flex;align-items:center;gap:8px;font:12px/1.4 var(--ui-mono,ui-monospace,monospace);letter-spacing:.2em;color:#e24c43}
.rht-k i{width:8px;height:8px;border-radius:50%;background:#e24c43}
.rht-q{font:600 18px/1.35 var(--ui-sans,Inter,system-ui,sans-serif);color:#171717}
.robot-dock.in-hero:not(.is-flying) .robot-hero-tag{opacity:1;transform:none}
.robot-dock.is-flying .r-jet{animation-duration:.12s!important;opacity:1}
.robot-dock.is-flying .assistant-robot{filter:none}
@media(prefers-reduced-motion:reduce){.robot-dock{transition:opacity .2s ease}.robot-hero-tag{transition:none}}
/* Reserve two lines for the typed question so the bubble never jumps when a line wraps */
.robot-dock .robot-bubble-text{box-sizing:border-box;min-height:calc(2.8em + 6px)}
.robot-dock .robot-bubble-text::after{display:none}
.rb-ghost{visibility:hidden}
.rb-ghost::before{content:'\2060';visibility:visible;border-left:1px solid #171717;margin-left:1px;margin-right:-1px;animation:robot-caret 1s steps(1) infinite}
@media(prefers-reduced-motion:reduce){.rb-ghost::before{border-left:0}}
.robot-dock.hero-side .robot-hero-tag{right:auto;left:calc(100% - 6px);border-radius:22px 22px 22px 4px;transform-origin:left bottom;transform:translateX(-10px) scale(.96)}
.robot-dock.hero-side .robot-hero-tag::after{right:auto;left:-9px;border-top:0;border-right:0;border-bottom:1.5px solid #171717;border-left:1.5px solid #171717}
.robot-dock.hero-side.in-hero:not(.is-flying) .robot-hero-tag{transform:none}
.robot-dock.no-hero-card .robot-hero-tag{display:none}

/* Hero "Ask my AI" card — styled like the hero CTA buttons, placed by robot-hero-dock.js */
.robot-hero-tag{display:none!important}
.hero-ai-card{position:absolute;z-index:3;display:flex;align-items:center;gap:16px;box-sizing:border-box;padding:0 20px;background:#fff;color:#111;border:1.5px solid #111;font:600 .65rem/1 var(--h-mono,'JetBrains Mono',ui-monospace,monospace);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;opacity:0;transform:translateX(-8px);pointer-events:none;transition:opacity .35s ease,transform .35s ease,background .25s ease,color .25s ease}
.hero-ai-card.is-on{opacity:1;transform:none;pointer-events:auto}
.hero-ai-card::after{content:'';position:absolute;right:-8px;top:50%;width:12px;height:12px;margin-top:-6px;background:inherit;border-top:1.5px solid #111;border-right:1.5px solid #111;transform:rotate(45deg)}
.hac-k{display:flex;align-items:center;gap:8px;color:#e24c43;white-space:nowrap}
.hac-k i{width:7px;height:7px;border-radius:50%;background:#e24c43;animation:hacPulse 1.6s ease-in-out infinite}
.hac-q{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#555;letter-spacing:.14em}
.hac-k::after{content:'';width:1px;height:14px;margin-left:8px;background:#cfcfcf}
.hac-go{font-size:.85rem}
.hero-ai-card:hover{background:#111;color:#fff}
.hero-ai-card:hover .hac-q{color:#ddd}
.hero-ai-card:focus-visible{outline:2px solid #168bd1;outline-offset:3px}
@keyframes hacPulse{50%{opacity:.35}}
@media(prefers-reduced-motion:reduce){.hero-ai-card{transition:none}.hac-k i{animation:none}}

/* ===== Performance rig (assets/robot-rig.js) ===== */
.robot-launcher .assistant-robot{filter:none}
.robot-bubble{backdrop-filter:none}
.robot-rig{position:relative;display:block;width:100%;will-change:transform;animation:rig-float 4.8s ease-in-out infinite;transform:translateZ(0)}
.robot-rig .assistant-robot{position:relative;z-index:1}
.robot-arm-layer{position:absolute;left:0;top:0;width:100%;height:100%;z-index:0;overflow:visible;pointer-events:none;transform-origin:35.33% 51.87%;will-change:transform;animation:arm-wave 1.5s ease-in-out infinite}
/* inner SVG animations off: they force a full redraw every frame */
.robot-rig .r-float,.robot-rig .r-body,.robot-rig .r-shadow,.robot-rig .r-chest,.robot-rig .r-jet{animation:none!important}
.robot-rig .r-jet{opacity:.85}
.robot-dock.is-flying .robot-rig .r-jet{animation:robot-thrust .12s ease-in-out infinite alternate!important;opacity:1}
@keyframes rig-float{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(0,-5px,0)}}
@keyframes arm-wave{0%,100%{transform:rotate(0deg)}25%{transform:rotate(14deg)}50%{transform:rotate(-6deg)}75%{transform:rotate(10deg)}}
.robot-paused .robot-rig,.robot-paused .robot-arm-layer{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.robot-rig,.robot-arm-layer{animation:none!important}}
.robot-rig .r-arm-wave{animation:none!important}

/* ===== Hero placement on every screen + highlight ===== */
.robot-dock.in-hero:not(.is-ready){opacity:0}
.robot-dock.is-ready{transition:transform .9s cubic-bezier(.45,0,.2,1),opacity .45s ease}
.robot-dock.in-hero:not(.is-flying){transition:opacity .45s ease}
.robot-dock.no-anim{transition:none!important}
/* compact label under the robot on phones/tablets (counter-scaled so text stays readable) */
.robot-mini-label{display:none;position:absolute;left:50%;top:100%;margin-top:calc(4px * var(--inv,1));transform:translateX(-50%);white-space:nowrap;align-items:center;gap:calc(5px * var(--inv,1));padding:calc(5px * var(--inv,1)) calc(9px * var(--inv,1));font:600 calc(9.5px * var(--inv,1))/1 var(--h-mono,'JetBrains Mono',ui-monospace,monospace);letter-spacing:.14em;text-transform:uppercase;color:#111;background:#fff;border:calc(1.5px * var(--inv,1)) solid #111;box-shadow:calc(3px * var(--inv,1)) calc(3px * var(--inv,1)) 0 #e24c43;pointer-events:none}
.robot-mini-label i{width:calc(6px * var(--inv,1));height:calc(6px * var(--inv,1));border-radius:50%;background:#e24c43;animation:hacPulse 1.6s ease-in-out infinite}
.robot-dock.show-mini-label.in-hero:not(.is-flying) .robot-mini-label{display:inline-flex}
/* the card stands out from the plain CTA buttons: red offset shadow, a light sweep, nudging arrow */
.hero-ai-card{box-shadow:4px 4px 0 #e24c43}
.hac-clip{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.hac-clip::before{content:'';position:absolute;top:0;bottom:0;left:-40%;width:30%;background:linear-gradient(100deg,transparent,rgba(226,76,67,.16),transparent);transform:translateX(0);animation:hacSweep 3.6s ease-in-out 1.5s infinite;pointer-events:none}
.hero-ai-card.no-tail::after{display:none}
.hero-ai-card{overflow:visible}
.hero-ai-card .hac-go{display:inline-block;animation:hacNudge 1.8s ease-in-out infinite}
.hero-ai-card:hover{box-shadow:6px 6px 0 #e24c43;transform:translate(-2px,-2px)}
@keyframes hacSweep{0%{transform:translateX(0)}55%,100%{transform:translateX(560%)}}
@keyframes hacNudge{0%,100%{transform:translateX(0)}50%{transform:translateX(4px)}}
@media(prefers-reduced-motion:reduce){.hac-clip::before,.hero-ai-card .hac-go,.robot-mini-label i{animation:none}}
.hac-k,.hac-q,.hac-go{position:relative}
.hero-ai-card[hidden]{display:none!important}
/* Contact section greeting */
.robot-dock .robot-contact-bubble{opacity:0;transform:translateY(8px) scale(.96);transform-origin:right bottom;pointer-events:none;transition:opacity .35s ease,transform .35s cubic-bezier(.2,1.3,.4,1)}
.robot-dock.at-contact:not(.in-hero) .robot-contact-bubble{opacity:1;transform:none;pointer-events:auto}
.robot-dock.at-contact #robot-question-bubble{opacity:0!important;pointer-events:none!important}
.rcb-text{display:block;padding-top:6px;color:#171717;font-size:15px;font-weight:600;line-height:1.35}
@media(prefers-reduced-motion:reduce){.robot-dock .robot-contact-bubble{transition:none}}
.robot-dock,.robot-dock.is-ready{transition:opacity .45s ease!important}
.robot-dock.label-left .robot-mini-label{left:auto;right:100%;top:50%;margin-top:0;margin-right:calc(6px * var(--inv,1));transform:translateY(-50%)}
@media(max-width:899px){.robot-dock .robot-contact-bubble{display:none!important}}
.robot-dock.no-label .robot-mini-label{display:none!important}
.robot-dock.label-compact .robot-mini-label{gap:calc(4px * var(--inv,1));padding:calc(4px * var(--inv,1)) calc(6px * var(--inv,1));font-size:calc(8px * var(--inv,1));letter-spacing:.08em;box-shadow:calc(2px * var(--inv,1)) calc(2px * var(--inv,1)) 0 #e24c43;margin-top:calc(3px * var(--inv,1))}
.robot-dock.label-compact .robot-mini-label i{width:calc(5px * var(--inv,1));height:calc(5px * var(--inv,1))}

/* phones / low-end: no in-SVG jet animation during the flight (it repaints the SVG every frame) */
@media(max-width:899px){.robot-dock.is-flying .robot-rig .r-jet{animation:none!important;opacity:1}}
html.robot-lite .robot-dock.is-flying .robot-rig .r-jet{animation:none!important;opacity:1}
.robot-dock.is-flying .robot-rig .r-jet{animation:none!important;opacity:1}
.robot-dock:not(.is-ready){opacity:0!important;pointer-events:none}
.robot-dock .robot-mini-label{pointer-events:auto;cursor:pointer;margin-left:0;margin-bottom:0;-webkit-tap-highlight-color:transparent}
.robot-dock .robot-mini-label::before{content:'';position:absolute;inset:calc(-8px * var(--inv,1))}
.robot-dock .robot-mini-label:focus-visible{outline:2px solid #e24c43;outline-offset:2px}
body:has(#ai-modal.open) .robot-dock .robot-mini-label{visibility:hidden}
