:root{--bo-coin:#c44536}.fab-grain{--fab-grad:var(--bo-coin);--fab-grain-tex:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}body:has([data-nf-page]) .fab-group{display:none}.fab-group{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom, 0px));right:calc(24px + env(safe-area-inset-right, 0px));z-index:200;display:flex;flex-direction:column;align-items:flex-end;gap:12px;transform:translate(var(--fab-descent-x,0),var(--fab-descent-y,0));transition:opacity .4s ease,transform .4s ease,visibility .4s}@media (min-width:1024px){.fab-group.fab-held-top{top:153px;bottom:auto;right:max(calc(16px + env(safe-area-inset-right, 0px)),calc((100vw - 1152px) / 2));flex-direction:column-reverse}.fab-group.fab-held-top[data-fab-neon=home]{right:max(calc(24px + env(safe-area-inset-right, 0px)),calc(50vw - 616px))}}.fab-group.fab-suppressed{opacity:0;transform:translate(var(--fab-descent-x,0),calc(var(--fab-descent-y, 0px) + 14px)) scale(.6);visibility:hidden;pointer-events:none}.fab-group.fab-suppressed .fab-main{transform:scale(var(--fab-descent-scale,1))}.fab-group.is-tracking-scroll{transition:opacity .4s ease,visibility .4s}.fab-group.is-tracking-scroll.fab-suppressed{transition:opacity .4s ease,transform .4s ease,visibility .4s}.fab-group.is-tracking-scroll .fab-main{transform:scale(var(--fab-descent-scale,1))}.fab-group.is-tracking-scroll{--fab-descent-x:calc(24px - max(24px, calc(50vw - 616px)))}@media (prefers-reduced-motion:reduce){.fab-group,.fab-group.is-tracking-scroll{transition:none}}.fab-command-rail{position:absolute;right:calc(100% + 18px);top:50%;margin-top:-23px;box-sizing:border-box;height:46px;display:flex;flex-direction:row-reverse;overflow:visible;border:1px solid rgba(23,21,15,.44);border-radius:8px;background:#fffefc;box-shadow:0 5px 16px -6px rgba(23,21,15,.3);pointer-events:none}.fab-group.is-open .fab-command-rail{pointer-events:auto}.fab-command-row{position:static;box-sizing:border-box;width:44px;height:100%;flex:0 0 44px;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-left:1px solid rgba(23,21,15,.26);color:var(--color-fg-muted);background:transparent;cursor:pointer;--row-wash:color-mix(in srgb,#17150f 5%,#fffefc);--row-wash-strong:color-mix(in srgb,#17150f 13%,#fffefc);background:var(--row-wash);transition:background-color .2s var(--ease-hover)}.fab-command-row[data-command=contact]{--row-wash:color-mix(in oklab,#6395c8 30%,#fffefc);--row-wash-strong:color-mix(in oklab,#6395c8 50%,#fffefc)}.fab-command-row[data-command=ask]{--row-wash:color-mix(in oklab,#e8c832 26%,#fffefc);--row-wash-strong:color-mix(in oklab,#e8c832 44%,#fffefc)}.fab-command-row:last-child{border-left:0}.fab-command-row:first-child{border-radius:0 7px 7px 0}.fab-command-row:last-child{border-radius:7px 0 0 7px}.fab-command-row:focus-visible,.fab-command-row:hover{outline:none;background:var(--row-wash-strong)}.fab-command-row:focus-visible{z-index:2;box-shadow:0 0 0 3px var(--color-accent-soft),0 0 0 1px var(--color-accent)}.fab-command-rail:has(.fab-command-row:hover){border-color:rgba(23,21,15,.34)}.fab-command-label{position:absolute;top:calc(100% + 7px);right:0;display:flex;align-items:center;justify-content:center;width:max-content;padding:6px 12px;border:1px solid var(--color-rule);border-radius:6px;background:#fffefc;color:rgba(23,21,15,.92);font-size:13.5px;font-weight:550;white-space:nowrap;box-shadow:0 1px 2px rgba(23,21,15,.1);opacity:0;transform:translateY(-5px);pointer-events:none;transition:opacity .18s var(--ease-hover),transform .28s var(--ease-hover),border-color .18s var(--ease-hover)}.fab-command-label-text{display:inline-block;opacity:0;transform:translateY(4px);transition:opacity .16s var(--ease-hover),transform .16s var(--ease-hover)}.fab-command-row:focus-visible .fab-command-label-text,.fab-command-row:hover .fab-command-label-text{opacity:1;transform:none;transition:opacity .34s ease-out,transform .42s cubic-bezier(.33,1,.68,1);transition-delay:.11s}@media (prefers-reduced-motion:reduce){.fab-command-label-text{opacity:1;transform:none;transition:none}.fab-command-row:focus-visible .fab-command-label-text,.fab-command-row:hover .fab-command-label-text{transition:none;transition-delay:0s}}.fab-command-row:focus-visible .fab-command-label,.fab-command-row:hover .fab-command-label{opacity:1;transform:translateY(0);border-color:rgba(23,21,15,.44);background:var(--row-wash-strong);box-shadow:0 5px 16px -6px rgba(23,21,15,.3)}.fab-command-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;transition:transform .18s var(--ease-hover)}.fab-command-row:focus-visible .fab-command-icon,.fab-command-row:hover .fab-command-icon{transform:scale(1.12)}.fab-command-row[data-command=contact] .fab-command-icon{color:#5a70b8}.fab-command-row[data-command=ask] .fab-command-icon{color:var(--color-accent)}.fab-command-icon svg{width:18px;height:18px;stroke-width:1.8}.fab-command-close{color:rgba(23,21,15,.72)}.fab-command-close .fab-command-icon svg{width:14px;height:14px;stroke-width:1.6}@media (prefers-reduced-motion:no-preference){.fab-group:not(.is-open) .fab-command-icon,.fab-group:not(.is-open) .fab-command-rail,.fab-group:not(.is-open) .fab-command-row{opacity:0;visibility:hidden}}.fab-main{width:64px;height:64px;border-radius:50%;border:none;cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;background:var(--fab-grain-tex),var(--fab-grad);background-size:90px,auto;background-blend-mode:soft-light,normal;box-shadow:0 6px 20px -4px color-mix(in srgb,var(--bo-coin) 45%,transparent),0 2px 8px rgba(0,0,0,.12);transition:transform .24s var(--ease-hover),box-shadow .2s var(--ease-hover)}.fab-main:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.fab-main{position:relative;isolation:isolate}.fab-main:after,.fab-main:before{content:"";position:absolute;inset:0;border-radius:50%;border:2.5px solid var(--color-accent);opacity:0;z-index:-1;animation:fabRim 2.6s cubic-bezier(.22,.61,.36,1) infinite;pointer-events:none}.fab-main:before{animation-delay:-1.3s}@keyframes fabRim{0%{transform:scale(1);opacity:.85}60%{opacity:.22}to{transform:scale(1.65);opacity:0}}.fab-group[data-fab-neon=about],.fab-group[data-fab-neon=contact],.fab-group[data-fab-neon=home],.fab-group[data-fab-neon=resume]{--fab-rim:#ff9d1c}.fab-group[data-fab-neon=writing]{--fab-rim:#ffb347}.fab-group[data-fab-neon=work]{--fab-rim:#0d99ff}.fab-group[data-fab-neon=about],.fab-group[data-fab-neon=home],.fab-group[data-fab-neon=resume],.fab-group[data-fab-neon=writing]{--fab-rim-keyline:transparent}.fab-group[data-fab-neon] .fab-main:after,.fab-group[data-fab-neon] .fab-main:before{border-color:var(--fab-rim);border-width:3.5px;box-shadow:0 0 0 1px var(--fab-rim-keyline,transparent),0 0 14px 0 color-mix(in oklab,var(--fab-rim) 60%,transparent),inset 0 0 6px 0 color-mix(in oklab,var(--fab-rim) 35%,transparent)}.fab-group.is-open .fab-main:after,.fab-group.is-open .fab-main:before,.fab-group:hover .fab-main:after,.fab-group:hover .fab-main:before{animation-name:fabRimTight;animation-duration:1.7s}.fab-group[data-fab-neon=home].is-open .fab-main:after,.fab-group[data-fab-neon=home].is-open .fab-main:before,.fab-group[data-fab-neon=home]:hover .fab-main:after,.fab-group[data-fab-neon=home]:hover .fab-main:before{animation-name:fabRimHeld;animation-duration:2s}.fab-group[data-fab-neon=home].is-open .fab-main:before,.fab-group[data-fab-neon=home]:hover .fab-main:before{animation-delay:-1s}.fab-group[data-fab-neon=home] .fab-main:after,.fab-group[data-fab-neon=home] .fab-main:before{border-width:4.5px;box-shadow:0 0 10px 0 color-mix(in oklab,var(--fab-rim) 85%,transparent),0 0 28px 3px color-mix(in oklab,var(--fab-rim) 45%,transparent),inset 0 0 8px 0 color-mix(in oklab,var(--fab-rim) 42%,transparent)}@keyframes fabRimTight{0%{transform:scale(1);opacity:.55}60%{opacity:.16}to{transform:scale(1.28);opacity:0}}.fab-depth{position:absolute;inset:0;pointer-events:none;transform-origin:50% 50%;transition:transform .42s var(--ease-transition),opacity .22s var(--ease-hover) .05s}.fab-depth,.ha-fab .fab-depth{opacity:1;transform:rotate(-10deg)}.ha-fab-compact .fab-depth{transform:rotate(12deg)}.ha-fab.is-idle-tilt-anticipate .fab-depth{transform:rotate(-14deg);transition:transform .14s cubic-bezier(.34,0,.64,1)}.ha-fab.is-idle-tilt .fab-depth{transform:rotate(8deg)}.ha-fab.is-idle-look-a .fab-depth{transform:rotate(-22deg)}.ha-fab.is-idle-look-b .fab-depth{transform:rotate(12deg)}.ha-fab.is-pill-gaze .fab-depth{transform:rotate(calc(var(--gaze-tilt, -16deg) * 1.6))}.fab-depth-arc{fill:none;stroke:url(#fabDepthGrad);stroke-width:4}.fab-base-pulse{position:absolute;inset:0;border-radius:50%;pointer-events:none;background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--bo-coin) 80%,#17150f) 0,color-mix(in srgb,var(--bo-coin) 84%,#17150f) 46%,transparent 70%);transform:scale(.15);opacity:0;animation:none}@media (prefers-reduced-motion:reduce){.fab-base-pulse{animation:none;opacity:0}}.fab-depth-nose{fill:color-mix(in srgb,var(--bo-coin) 88%,#17150f)}.fab-group.is-engaged .fab-depth{transform:rotate(12deg)}.fab-group.is-engaged.is-msg .fab-depth{transform:rotate(-18deg)}.fab-group.is-glancing.is-look-a .fab-depth{transform:rotate(-22deg)}.fab-group.is-glancing.is-look-b .fab-depth{transform:rotate(12deg)}@media (prefers-reduced-motion:reduce){.fab-depth{transition:none}}.fab-eight{width:22px;height:22px;overflow:visible;transition:transform .4s var(--ease-hover);animation:fabEightSpin 16s linear infinite}.fab-group .fab-eight{opacity:0;animation:none}@keyframes fabEightSpin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fab-eight circle{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round}.fab-eight .e-top{stroke-dasharray:23 4.6;animation:fabEightTop 2.6s linear infinite,fabEightBreatheTop 6.5s ease-in-out infinite;transform-origin:12px 7.2px}@keyframes fabEightBreatheTop{0%,to{transform:scale(1) translate(0)}25%{transform:scale(1.14,.9) translate(.6px,.4px)}50%{transform:scale(.92,1.12) translate(-.4px,-.5px)}75%{transform:scale(1.06,1.02) translate(.3px,-.2px)}}.fab-eight .e-bot{stroke-dasharray:24.3 4.6;animation:fabEightBot 2.6s linear infinite,fabEightBreatheBot 6.5s ease-in-out infinite;animation-delay:-1.3s,-2.5s;transform-origin:12px 16.8px}@keyframes fabEightBreatheBot{0%,to{transform:scale(1) translate(0)}25%{transform:scale(.9,1.13) translate(-.5px,-.4px)}50%{transform:scale(1.15,.91) translate(.5px,.5px)}75%{transform:scale(.97,1.05) translate(-.3px,.2px)}}@keyframes fabEightTop{to{stroke-dashoffset:-27.6}}@keyframes fabEightBot{to{stroke-dashoffset:28.9}}.fab-group.is-engaged .fab-main,.fab-group.is-open .fab-main,.fab-group:hover .fab-main{transform:scale(1.1667);box-shadow:0 10px 30px -4px color-mix(in srgb,var(--bo-coin) 50%,transparent),0 2px 8px rgba(0,0,0,.16)}.fab-group:where(:not(:hover):not(.is-open):not(.is-engaged):not(:focus-within):not(.is-glancing):not(.is-glance-out):not(.fab-suppressed):not(.is-tracking-scroll):not(.is-releasing)) .fab-main{transform:scale(1);transition:transform .65s cubic-bezier(.3,1.25,.5,1),box-shadow .2s var(--ease-hover)}.fab-group.is-engaged .fab-eight,.fab-group.is-open .fab-eight,.fab-group:hover .fab-eight{animation:none;opacity:0;transform:rotate(70deg) scale(.55)}.fab-group.is-engaged .fab-eight circle,.fab-group.is-open .fab-eight circle,.fab-group:hover .fab-eight circle{animation-play-state:paused}.fab-eight{transition:opacity .24s var(--ease-hover),transform .34s cubic-bezier(.34,1.4,.64,1),width .24s var(--ease-hover),height .24s var(--ease-hover)}.fab-shades{position:absolute;left:50%;top:50%;width:72%;height:auto;opacity:1;transform:translate(-50%,-50%) rotate(-6deg) scale(1);transition:opacity .5s var(--ease-hover) .05s,transform .6s cubic-bezier(.3,1.25,.5,1) .05s;pointer-events:none;overflow:visible}.fab-group.is-engaged .fab-shades{transform:translate(-50%,-50%) rotate(7deg) scale(1)}.fab-group.is-engaged.is-msg .fab-shades{transform:translate(-50%,calc(-50% - 1.5px)) rotate(-12deg) scale(1)}.fab-group.is-pill-gaze .fab-shades{transform:translate(-50%,-50%) rotate(-16deg) scale(1)}.fab-group.is-pill-gaze .fab-depth{transform:rotate(-16deg)}@keyframes fabShadesEngage{0%{transform:scale(1) translateY(0);animation-timing-function:cubic-bezier(.33,0,.3,1)}26%{transform:scale(.958) translateY(2.6px);animation-timing-function:cubic-bezier(.22,0,.24,1)}64%{transform:scale(1.055) translateY(-4.2px);animation-timing-function:cubic-bezier(.32,0,.28,1)}to{transform:scale(1) translateY(0)}}@keyframes fabShadesRelease{0%{transform:scale(1) translateY(0);animation-timing-function:cubic-bezier(.3,0,.3,1)}34%{transform:scale(1.032) translateY(-2.6px);animation-timing-function:cubic-bezier(.25,0,.26,1)}to{transform:scale(1) translateY(0)}}.fab-shades-inner{transform-box:fill-box;transform-origin:center}.fab-group.is-engaged .fab-shades-inner{animation:fabShadesEngage .66s linear}.fab-group.is-releasing .fab-shades-inner{animation:fabShadesRelease .46s linear}.fab-frame{fill:#fff;stroke:none}.fab-frame-thin{fill:none;stroke:#fff;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}@media (prefers-reduced-motion:reduce){.fab-eight,.fab-shades{transition:none}.fab-group.is-engaged .fab-shades-inner,.fab-group.is-releasing .fab-shades-inner{animation:none}}.fab-eight-wobble{transform-box:fill-box;transform-origin:center}@keyframes fabEightAnticipate{0%{transform:rotate(0deg) scale(1)}to{transform:rotate(6deg) scale(.93)}}.fab-group.is-glance-anticipate .fab-eight-wobble{animation:fabEightAnticipate .1s var(--ease-hover) forwards}.fab-group.is-glance-out .fab-eight,.fab-group.is-glancing .fab-eight{opacity:0;animation-play-state:paused;transition:opacity .18s var(--ease-hover)}.fab-group.is-glance-out .fab-eight circle,.fab-group.is-glancing .fab-eight circle{animation-play-state:paused}.fab-group.is-glancing .fab-shades{opacity:1;transform:translate(-50%,-50%) rotate(-6deg) scale(1);transition:opacity .22s var(--ease-hover),transform .42s var(--ease-transition)}.fab-group.is-glancing.is-look-a .fab-shades{transform:translate(-50%,-50%) rotate(-14deg) scale(1)}.fab-group.is-glancing.is-look-b .fab-shades{transform:translate(-50%,-50%) rotate(7deg) scale(1)}.fab-group.is-look-a .fab-shades-inner,.fab-group.is-look-b .fab-shades-inner{animation:fabShadesEngage .66s linear}@media (prefers-reduced-motion:reduce){.fab-group.is-glance-anticipate .fab-eight-wobble{animation:none}.fab-group.is-glance-out .fab-eight,.fab-group.is-glancing .fab-eight,.fab-group.is-glancing .fab-shades{transition:none}.fab-group.is-look-a .fab-shades-inner,.fab-group.is-look-b .fab-shades-inner{animation:none}}.fa-lens-r,.fab-lens-r{transform-box:fill-box;transform-origin:center}@keyframes lensWink{0%{transform:scaleY(1) scaleX(1);animation-timing-function:cubic-bezier(.3,0,.2,1)}10%{transform:scaleY(1.15) scaleX(1);animation-timing-function:linear}25%{transform:scaleY(1.15) scaleX(1);animation-timing-function:cubic-bezier(.7,0,.84,0)}40%{transform:scaleY(.1) scaleX(1.06);animation-timing-function:linear}63%{transform:scaleY(.1) scaleX(1.06);animation-timing-function:cubic-bezier(.34,1.4,.64,1)}86%{transform:scaleY(1.13) scaleX(1);animation-timing-function:cubic-bezier(.33,0,.3,1)}to{transform:scaleY(1) scaleX(1)}}.fab-group.is-dwell-wink .fab-lens-r{animation:lensWink .62s linear}@keyframes winkGather{0%{transform:translateY(0);animation-timing-function:cubic-bezier(.3,0,.2,1)}40%{transform:translateY(.6px);animation-timing-function:linear}63%{transform:translateY(.6px);animation-timing-function:cubic-bezier(.34,1.4,.64,1)}to{transform:translateY(0)}}.fab-group.is-dwell-wink .fab-shades-inner,.ha-fab.is-idle-wink .fab-avatar-me{animation:winkGather .62s linear}@media (prefers-reduced-motion:reduce){.fab-group.is-dwell-wink .fab-lens-r,.fab-group.is-dwell-wink .fab-shades-inner,.ha-fab.is-idle-wink .fab-avatar-me{animation:none}}@keyframes fabShadesLingerBreathe{0%,to{transform:rotate(0deg) translateY(0)}32%{transform:rotate(2.4deg) translateY(-.7px)}68%{transform:rotate(-1.8deg) translateY(.5px)}}.fab-group.is-dwell-linger .fab-shades-inner{animation:fabShadesLingerBreathe 1.5s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.fab-group.is-dwell-linger .fab-shades-inner{animation:none}}.fab-eight circle{transition:r .34s var(--ease-hover),opacity .34s var(--ease-hover)}.fab-group:has(.fab-command-row[data-command=contact]:focus-visible) .fab-eight .e-top,.fab-group:has(.fab-command-row[data-command=contact]:hover) .fab-eight .e-top{r:5.2}.fab-group:has(.fab-command-row[data-command=contact]:focus-visible) .fab-eight .e-bot,.fab-group:has(.fab-command-row[data-command=contact]:hover) .fab-eight .e-bot{opacity:.45}.fab-group:has(.fab-command-row[data-command=ask]:focus-visible) .fab-eight .e-bot,.fab-group:has(.fab-command-row[data-command=ask]:hover) .fab-eight .e-bot{r:5.4}.fab-group:has(.fab-command-row[data-command=ask]:focus-visible) .fab-eight .e-top,.fab-group:has(.fab-command-row[data-command=ask]:hover) .fab-eight .e-top{opacity:.45}.fab-group:has(.fab-command-row[data-command=contact]:focus-visible) .fab-shades,.fab-group:has(.fab-command-row[data-command=contact]:hover) .fab-shades{transform:translate(-50%,calc(-50% - 1.5px)) rotate(-12deg) scale(1)}.fab-group:has(.fab-command-row[data-command=contact]:focus-visible) .fab-depth,.fab-group:has(.fab-command-row[data-command=contact]:hover) .fab-depth{transform:rotate(-18deg)}.fab-group:has(.fab-command-row[data-command=ask]:focus-visible) .fab-shades,.fab-group:has(.fab-command-row[data-command=ask]:hover) .fab-shades{transform:translate(-50%,-50%) rotate(7deg) scale(1)}.fab-group:has(.fab-command-row[data-command=ask]:focus-visible) .fab-depth,.fab-group:has(.fab-command-row[data-command=ask]:hover) .fab-depth{transform:rotate(12deg)}.fab-main:active .fab-eight{transform:scale(.82);transition-duration:.12s}.fab-main:active{transform:scale(.94)}.fab-main.is-beat1-pop{animation:fabMainBeat1Pop .42s both}@keyframes fabMainBeat1Pop{0%{transform:scale(1);animation-timing-function:cubic-bezier(.3,1.9,.5,1)}45%{transform:scale(1.18);animation-timing-function:var(--ease-hover)}70%{transform:scale(.95)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.fab-eight,.fab-eight circle{animation:none;stroke-dasharray:none}.fab-command-label,.fab-eight,.fab-main{transition:none}.fab-main.is-beat1-pop{animation:none}.fab-main:after{animation:none;opacity:0}}.fab-panel{--fab-ease-bloom:cubic-bezier(0.34,1.56,0.64,1);position:fixed;bottom:calc(92px + env(safe-area-inset-bottom, 0px));right:calc(24px + env(safe-area-inset-right, 0px));z-index:201;isolation:isolate;width:min(380px,calc(100vw - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px) - 32px));width:min(380px,calc(100dvw - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px) - 32px));height:min(620px,calc(100vh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 116px));height:min(620px,calc(100svh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 116px));display:flex;flex-direction:column;background:#fff;border:1px solid color-mix(in srgb,var(--color-fg) 26%,transparent);border-radius:20px;box-shadow:0 0 0 1px rgba(255,255,255,.9),0 2px 8px -2px rgba(23,21,15,.16),0 20px 44px -12px rgba(23,21,15,.26),0 44px 90px -32px rgba(23,21,15,.34);overflow:hidden;opacity:0;transform-origin:var(--fab-open-x,100%) var(--fab-open-y,100%);transform:translate(8px,14px) scale(.9,.82);pointer-events:none;transition:opacity .34s var(--ease-entry),transform .62s cubic-bezier(.16,1,.3,1),border-color .26s cubic-bezier(.23,1,.32,1)}.fab-panel[data-mode=contact]{border-color:color-mix(in srgb,#5a70b8 62%,transparent)}.fab-panel.is-open{opacity:1;transform:none;pointer-events:auto}@media (min-width:1024px){.fab-panel{top:205px;bottom:auto;height:min(620px,calc(100vh - env(safe-area-inset-top, 0px) - 233px));height:min(620px,calc(100dvh - env(safe-area-inset-top, 0px) - 233px));transform-origin:var(--fab-open-x,52%) var(--fab-open-y,0);transform:translateY(-14px) scale(.9,.82)}.fab-panel.is-open{transform:none}}.fab-panel.fab-suppressed,.fab-panel.is-open.fab-suppressed{opacity:0;transform:translateY(10px) scale(.98);visibility:hidden;pointer-events:none;transition:opacity .35s ease,transform .35s ease,visibility .35s}@keyframes fabChromeIn{0%{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:none}}.fab-panel:not(.shell-in) .fab-tabpanels,.fab-panel:not(.shell-in) .fab-tabpanels *{animation-play-state:paused}.fab-panel.is-open .fab-panel-header{animation:fabChromeIn .46s cubic-bezier(.16,1,.3,1) .1s backwards}.fab-panel.is-open .fab-tabs{animation:fabChromeIn .46s cubic-bezier(.16,1,.3,1) .17s backwards}.fab-panel.is-pills-retracting{opacity:1;transform:none}.fab-panel.is-pills-retracting .fab-chip-deal{animation:fabPillRetreat .22s cubic-bezier(.55,0,.7,.4) forwards}@keyframes fabPillRetreat{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(7px) scale(.9)}}.fab-panel.is-retracting .fab-panel-header,.fab-panel.is-retracting .fab-tabpanels,.fab-panel.is-retracting .fab-tabs{opacity:0;transition:opacity .2s var(--ease-hover)}@keyframes fabPanelRetract{0%{opacity:1;transform:translate(0) scale(1);animation-timing-function:cubic-bezier(.36,0,.42,1)}16%{opacity:1;transform:translateY(-6px) scale(1.012);animation-timing-function:cubic-bezier(.55,0,.2,1)}72%{opacity:.85}to{opacity:0;transform:translate(0) scale(.07)}}.fab-panel.is-retracting{animation:fabPanelRetract .56s linear forwards;transform-origin:calc(100% - 32px) calc(100% + 36px)}@media (min-width:1024px){.fab-panel.is-retracting{transform-origin:var(--fab-open-x,52%) var(--fab-open-y,0)}}.fab-smoke{position:fixed;z-index:202;width:0;height:0;pointer-events:none}.fab-smoke-puff{position:absolute;left:-11px;top:-11px;width:22px;height:22px;border-radius:50%;background:radial-gradient(circle,rgba(255,252,244,.98) 0,rgba(226,205,160,.7) 40%,rgba(196,176,138,.35) 58%,transparent 74%);filter:blur(.5px);opacity:0;animation:fabSmokePuff .6s ease-out forwards}.fab-smoke-puff:first-child{--puff-x:-24px;--puff-y:-20px}.fab-smoke-puff:nth-child(2){--puff-x:2px;--puff-y:-30px;animation-delay:.07s}.fab-smoke-puff:nth-child(3){--puff-x:22px;--puff-y:-16px;width:15px;height:15px;animation-delay:.13s}@keyframes fabSmokePuff{0%{opacity:0;transform:translate(0) scale(.45)}20%{opacity:1}to{opacity:0;transform:translate(var(--puff-x),var(--puff-y)) scale(1.8)}}@media (prefers-reduced-motion:reduce){.fab-smoke{display:none}.fab-panel{transition:opacity .15s linear;transform:none}.fab-panel.is-open .fab-panel-header,.fab-panel.is-open .fab-tabs,.fab-panel.is-retracting{animation:none}}.fab-panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--color-rule);flex-shrink:0}.fab-panel-heading{display:flex;align-items:center;gap:10px}.fab-panel-icon{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--color-accent);background:var(--color-accent-soft)}.fab-panel-title{font-size:14px;font-weight:600;color:var(--color-fg)}:root{--bo-header-band:#b5b4a7;--bo-header-h:52px}.ha-bubble-bg{background:linear-gradient(to bottom,var(--bo-header-band) 0 var(--bo-header-h),#ffffff var(--bo-header-h));box-shadow:0 2px 8px -2px rgba(23,21,15,.16),0 20px 44px -12px rgba(23,21,15,.26),0 44px 90px -32px rgba(23,21,15,.34)}.ha-panel-header{background:transparent;border-bottom:none;height:var(--bo-header-h);padding-top:0;padding-bottom:0;align-items:center}.fab-panel .fab-panel-header{background:var(--bo-header-band);border-bottom:none}.fab-panel .fab-panel-title,.ha-panel-header .fab-panel-title{font-family:var(--font-display),Georgia,serif;font-size:17px;font-weight:600;color:var(--color-fg);letter-spacing:0}.fab-panel-title .fab-panel-title-role{font-weight:400}.fab-panel-mark{display:flex;align-items:center;flex-shrink:0;color:var(--color-fg)}.fab-panel .fab-panel-mark,.ha-panel-header .fab-panel-mark{--color-fg-ink:var(--color-fg)}.ha-bubble .fab-panel-header{margin:-1rem -1.125rem 0;padding:1rem 1.125rem .75rem}.ha-bubble .fab-tabs{margin:0 -1.125rem}.ha-body-ground{margin-left:-1.125rem;margin-right:-1.125rem;padding-left:1.125rem;padding-right:1.125rem}.fab-panel-body.fab-ask-ground,.ha-body-ground{background-color:#f8f4eb}.fab-panel-body.fab-ask-ground.fab-ask-ground--resume,.fab-panel-body.fab-ask-ground.fab-ask-ground--work{background-color:color-mix(in oklab,#4ee2ff 10%,#fdfbf6)}.fab-panel-body.fab-ask-ground.fab-ask-ground--about{background-color:color-mix(in oklab,#d4ff5c 10%,#fdfbf6)}.ha-body-ground.fab-ask-ground--resume,.ha-body-ground.fab-ask-ground--work{background-color:color-mix(in oklab,#4ee2ff 10%,#fdfbf6)}.ha-body-ground.fab-ask-ground--about{background-color:color-mix(in oklab,#d4ff5c 10%,#fdfbf6)}.fab-panel:has(.fab-ask-ground--resume) .fab-tabs,.fab-panel:has(.fab-ask-ground--work) .fab-tabs,.ha-bubble:has(.fab-ask-ground--resume) .fab-tabs,.ha-bubble:has(.fab-ask-ground--work) .fab-tabs{--fab-band:color-mix(in oklab,#4ee2ff 10%,#efeee9)}.fab-panel:has(.fab-ask-ground--about) .fab-tabs,.ha-bubble:has(.fab-ask-ground--about) .fab-tabs{--fab-band:color-mix(in oklab,#d4ff5c 10%,#efeee9)}.fab-panel-body.fab-ask-ground,.ha-body-ground{background-image:radial-gradient(color-mix(in oklab,#6d685e 15%,transparent) 1px,transparent 1.1px);background-size:10px 10px}.ha-bubble .fab-chat-form{background:#fff;border-radius:0 0 20px 20px}.ha-bubble .ha-contact-panel .fab-panel-body{overflow:visible;padding:16px 0 0}@keyframes ha-tab-content-in{0%{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}.ha-body-ground.is-tab-revealing>*,.ha-contact-panel.is-tab-revealing .fab-form>*,.ha-contact-panel.is-tab-revealing .fab-panel-body>:not(.fab-form){animation:ha-tab-content-in .24s cubic-bezier(.16,1,.3,1) both}@keyframes ha-tab-body-in-ask{0%{opacity:.35;transform:translateX(-20px)}62%{opacity:1;transform:translateX(2.5px)}to{opacity:1;transform:none}}@keyframes ha-tab-body-in-contact{0%{opacity:.35;transform:translateX(20px)}62%{opacity:1;transform:translateX(-2.5px)}to{opacity:1;transform:none}}.ha-body-ground.is-tab-revealing{animation:ha-tab-body-in-ask .36s cubic-bezier(.22,1,.36,1) both}.ha-contact-panel.is-tab-revealing{animation:ha-tab-body-in-contact .36s cubic-bezier(.22,1,.36,1) both}.ha-body-ground.is-tab-revealing>:nth-child(2),.ha-contact-panel.is-tab-revealing .fab-form>:nth-child(2){animation-delay:45ms}.ha-body-ground.is-tab-revealing>:nth-child(3),.ha-contact-panel.is-tab-revealing .fab-form>:nth-child(3){animation-delay:.09s}.ha-body-ground.is-tab-revealing>:nth-child(4),.ha-contact-panel.is-tab-revealing .fab-form>:nth-child(4){animation-delay:.135s}.ha-body-ground.is-tab-revealing>:nth-child(5),.ha-contact-panel.is-tab-revealing .fab-form>:nth-child(5){animation-delay:.18s}.ha-contact-panel.is-tab-revealing .fab-form>:nth-child(6),.ha-contact-panel.is-tab-revealing .fab-form>:nth-child(7){animation-delay:.225s}@media (prefers-reduced-motion:reduce){.ha-body-ground.is-tab-revealing,.ha-body-ground.is-tab-revealing>*,.ha-contact-panel.is-tab-revealing,.ha-contact-panel.is-tab-revealing .fab-form>*,.ha-contact-panel.is-tab-revealing .fab-panel-body>:not(.fab-form){animation:none}}.fab-panel-close{width:30px;height:30px;border-radius:50%;border:1px solid transparent;background:none;color:var(--color-fg-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s var(--ease-hover),color .15s var(--ease-hover)}.fab-panel-close:hover{background:var(--color-bg-soft);color:var(--color-fg)}.fab-panel-close:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.fab-panel-close.pg-dock-close{width:24px;height:24px}.dialog-close-x{position:absolute;top:-14px;right:-14px;z-index:5;width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--color-fg);color:var(--color-bg);border:1px solid var(--color-fg);box-shadow:0 4px 14px -6px rgba(0,0,0,.35);cursor:pointer;transition:transform .18s cubic-bezier(.22,1,.36,1),box-shadow .18s ease}.dialog-close-x svg{width:14px;height:14px}.dialog-close-x:hover{transform:scale(1.12);box-shadow:0 7px 20px -8px rgba(23,21,15,.42)}.dialog-close-x:active{transform:scale(.95)}.dialog-close-x:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){.dialog-close-x{transition:none}}.dialog-close-x--inset{top:8px;right:8px}.dialog-close-x--soft{position:static;width:26px;height:26px;background:transparent;color:var(--color-fg-muted);border:1px solid transparent;box-shadow:none}.dialog-close-x--soft svg{width:13px;height:13px}.dialog-close-x--soft:hover{background:color-mix(in srgb,var(--color-fg) 8%,transparent);color:var(--color-fg);transform:none;box-shadow:none}.dialog-close-x--soft:active{transform:scale(.94)}.fab-panel-actions{display:flex;align-items:center;gap:2px}.bo-prefs-wrap{position:relative;display:inline-flex}.bo-prefs-trigger svg{width:15px;height:15px}.bo-prefs-trigger.dialog-close-x--soft{border-color:rgba(23,21,15,.22)}.bo-prefs-trigger.dialog-close-x--soft:hover{background:transparent}.bo-prefs-trigger.dialog-close-x--soft:hover,.bo-prefs-trigger[aria-expanded=true].dialog-close-x--soft{border-color:var(--color-accent);color:var(--color-accent)}.bo-prefs-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:40}.ha-panel-header .bo-prefs-wrap{position:absolute;top:10px;right:42px;z-index:31}.ha-bubble .ha-close-x.dialog-close-x--soft{top:10px;right:10px}.gd-close-x,.ha-close-x{top:-30px;right:-32px;z-index:30}.fab-tabs{display:flex;gap:4px;padding:8px 14px;--fab-band:#efeee9;background:var(--fab-band);border-bottom:1px solid var(--color-rule);flex-shrink:0;position:relative}.fab-tab-indicator{position:absolute;top:8px;bottom:8px;left:14px;width:calc((100% - 28px - 4px) / 2);border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-accent) 26%,transparent),0 1px 2px -1px rgba(35,28,14,.14),0 3px 8px -3px rgba(35,28,14,.2);pointer-events:none;transition:transform .46s cubic-bezier(.68,-.2,.22,1.18)}.fab-tabs[data-mode=contact] .fab-tab-indicator{transform:translateX(calc(100% + 4px))}@media (prefers-reduced-motion:reduce){.fab-tab-indicator{transition:none}}.fab-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:7px 10px;border:none;border-radius:999px;background:transparent;font-size:12.5px;font-weight:500;color:var(--color-fg-muted);cursor:pointer;transition:background .15s var(--ease-hover),color .15s var(--ease-hover),box-shadow .15s var(--ease-hover),transform .16s var(--ease-hover)}.fab-tab:hover{color:var(--color-fg)}.fab-tab:not(.is-active){color:color-mix(in srgb,var(--color-fg) 52%,transparent)}.fab-tab:not(.is-active) svg{opacity:.62;transition:opacity .15s var(--ease-hover)}.fab-tab:not(.is-active):hover{color:var(--color-fg)}.fab-tab:not(.is-active):hover svg{opacity:1}.fab-tab:active{transform:scale(.96)}.fab-tab{position:relative;z-index:1}.fab-tab.is-active{color:var(--color-accent);font-weight:700}.fab-tab:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){.fab-tab{transition:none}}.fab-tabpanels{position:relative;flex:1;min-height:0}.fab-tabpanel{position:absolute;inset:0;display:flex;flex-direction:column;min-height:0;opacity:0;pointer-events:none;filter:blur(2px);transition:opacity .26s var(--ease-hover),transform .38s var(--fab-ease-bloom,var(--ease-hover)),filter .26s var(--ease-hover)}:where(#fab-tabpanel-ask){transform:translateX(-22px)}:where(#fab-tabpanel-contact){transform:translateX(22px)}.fab-tabpanel.is-active{opacity:1;transform:none;filter:none;pointer-events:auto}@media (prefers-reduced-motion:reduce){.fab-tabpanel,:where(#fab-tabpanel-ask),:where(#fab-tabpanel-contact){transition:opacity .15s linear;transform:none;filter:none}}.fab-panel-body{flex:1;overflow-y:auto;padding:16px 18px;display:flex;flex-direction:column;gap:12px;min-height:0;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none}.fab-panel-body::-webkit-scrollbar{display:none}.fab-msg-row{display:flex;align-items:flex-end;gap:8px}.fab-msg-row.bot{gap:14px}.fab-msg-row.user{flex-direction:row-reverse}.fab-avatar{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:999px;margin-bottom:2px}.fab-avatar-me{position:relative;--fab-grain-tex:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background:var(--fab-grain-tex),var(--bo-coin);background-size:40px,auto;background-blend-mode:soft-light,normal}.fab-msg-row .fab-avatar-me{box-shadow:0 3px 8px -2px color-mix(in srgb,var(--bo-coin) 16%,transparent),0 1px 3px rgba(0,0,0,.08)}@keyframes bo-bounce{0%{transform:translateY(0) scaleY(1) scaleX(1);animation-timing-function:cubic-bezier(.33,0,.2,1)}4%{transform:translateY(1.5px) scaleY(.96) scaleX(1.03);animation-timing-function:cubic-bezier(.33,0,.2,1)}8%{transform:translateY(-5px) scaleY(1.03) scaleX(.98);animation-timing-function:cubic-bezier(.55,0,1,.45)}25%{transform:translateY(0) scaleY(.95) scaleX(1.04);animation-timing-function:cubic-bezier(.33,0,.2,1)}32%{transform:translateY(-2px) scaleY(1.02) scaleX(.99);animation-timing-function:cubic-bezier(.55,0,1,.45)}40%,to{transform:translateY(0) scaleY(1) scaleX(1)}}.bo-bounce{display:inline-flex;align-items:center;justify-content:center;transform-origin:bottom center;animation:bo-bounce 2.1s ease-in-out infinite}.ha-fab .bo-bounce{animation-duration:2.3s}.fab-msg-row .bo-bounce{animation-duration:1.9s}@media (prefers-reduced-motion:reduce){.bo-bounce{animation:none}}.bo-bounce-still{animation:none}.bo-bounce.bo-peek-once{animation-iteration-count:1}@keyframes bo-peek-jump{0%{transform:translateY(0) scaleY(.94) scaleX(1.06);animation-timing-function:cubic-bezier(.1,.55,.3,1)}8%{transform:translateY(-2.5px) scaleY(1.04) scaleX(.97);animation-timing-function:cubic-bezier(.25,.5,.45,1)}42%{transform:translateY(-6px) scaleY(1.01) scaleX(.99);animation-timing-function:cubic-bezier(.55,0,.75,.45)}88%{transform:translateY(-2px) scaleY(1.04) scaleX(.97);animation-timing-function:cubic-bezier(.45,0,.85,.6)}to{transform:translateY(0) scaleY(.94) scaleX(1.06)}}.bo-peek .bo-bounce{animation:bo-peek-jump .78s linear infinite}.bo-peek .bo-bounce.bo-peek-once{animation-iteration-count:1}.bo-peek.bo-peek-joy .bo-bounce,.bo-peek.bo-peek-joy .bp-shadow{animation-duration:.48s}@media (hover:hover) and (pointer:fine){.bo-peek .fab-avatar-me:after,.bo-peek .fab-avatar-me:before{content:"";position:absolute;inset:-1px;border-radius:50%;border:2px solid var(--color-accent);opacity:0;z-index:-1;pointer-events:none;transition:opacity .22s var(--ease-hover,ease)}.bo-peek:focus-visible .fab-avatar-me:after,.bo-peek:focus-visible .fab-avatar-me:before,.bo-peek:hover .fab-avatar-me:after,.bo-peek:hover .fab-avatar-me:before{animation:fabRim 2.2s cubic-bezier(.22,.61,.36,1) infinite}.bo-peek:focus-visible .fab-avatar-me:before,.bo-peek:hover .fab-avatar-me:before{animation-delay:-1.1s}.bo-peek-hold .fab-avatar-me:after,.bo-peek-hold .fab-avatar-me:before{display:none}}@media (prefers-reduced-motion:reduce){.bo-peek .bo-bounce,.bo-peek .fab-avatar-me:after,.bo-peek .fab-avatar-me:before{animation:none}}.bo-peek-alive .fab-avatar-me svg{transition:transform .52s cubic-bezier(.5,-.32,.26,1.34)}.bo-peek-alive.is-idle-tilt-anticipate .fab-avatar-me svg{transform:rotate(-9deg);transition:transform .14s cubic-bezier(.34,0,.64,1)}.bo-peek-alive.is-idle-tilt .fab-avatar-me svg{transform:rotate(5deg)}.bo-peek-alive.is-idle-look-a .fab-avatar-me svg{transform:rotate(-14deg)}.bo-peek-alive.is-idle-look-b .fab-avatar-me svg{transform:rotate(7deg)}.bo-peek-alive.is-idle-look-a .fa-body{animation:haGlanceGatherA .66s linear}.bo-peek-alive.is-idle-look-b .fa-body{animation:haGlanceGatherB .66s linear}.bo-peek-alive.is-idle-wink .fab-avatar-me{animation:winkGather .62s linear}.bo-peek-alive.is-idle-wink .fa-lens-r{animation:lensWink .62s linear}@media (prefers-reduced-motion:reduce){.bo-peek-alive .fab-avatar-me svg,.bo-peek-alive.is-idle-tilt-anticipate .fab-avatar-me svg{transition:none}.bo-peek-alive.is-idle-look-a .fa-body,.bo-peek-alive.is-idle-look-b .fa-body,.bo-peek-alive.is-idle-wink .fa-lens-r,.bo-peek-alive.is-idle-wink .fab-avatar-me{animation:none}}.bo-peek{display:inline-flex;flex-direction:column;align-items:center;flex-shrink:0;background:none;border:0;padding:0;margin:0;cursor:pointer}.bp-avatar{position:relative;z-index:1}.bo-peek-hold{visibility:hidden;pointer-events:none}.bo-peek-hold,.bo-peek-hold .bo-bounce,.bo-peek-hold .bo-shadow{animation:none}.bp-shadow{position:absolute;left:50%;bottom:-3px;width:20px;height:5px;margin-left:-10px;border-radius:50%;background:radial-gradient(ellipse at center,rgba(23,21,15,.34) 0,rgba(23,21,15,.16) 55%,rgba(23,21,15,0) 100%);animation:bo-peek-shadow .78s linear infinite}@keyframes bo-peek-shadow{0%{transform:scale(1.12);opacity:1}8%{transform:scale(1);opacity:.92}42%{transform:scale(.7);opacity:.58}88%{transform:scale(.96);opacity:.9}to{transform:scale(1.12);opacity:1}}.bo-peek-arriving .bo-bounce{animation:none;transform:translateY(0) scaleY(.94) scaleX(1.06)}.bo-peek-arriving .bp-shadow{animation:none;transform:scale(1.12);opacity:1}.fab-group.fab-retiring{pointer-events:none;animation:fab-retire-fade .4s cubic-bezier(.4,0,.7,.6) both}.fab-group.fab-retiring .fab-main{animation:fab-retire-sink .4s cubic-bezier(.4,0,.7,.6) both}@keyframes fab-retire-fade{0%{opacity:1}to{opacity:0}}@keyframes fab-retire-sink{0%{transform:translateY(0) scale(1)}to{transform:translateY(10px) scale(.94)}}@media (prefers-reduced-motion:reduce){.fab-group.fab-retiring,.fab-group.fab-retiring .fab-main{animation:none}.fab-group.fab-retiring{opacity:0}}.bo-peek{position:relative;animation:bo-peek-in .62s cubic-bezier(.22,.61,.36,1) both}@keyframes bo-peek-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.bo-peek,.bp-shadow{animation:none}}.bo-stage{position:relative;display:inline-flex;align-items:center;justify-content:center}.bo-shadow-anchor{display:none}.fab-msg-row .bo-shadow-anchor{display:block;position:absolute;left:50%;bottom:-2px;width:68%;height:4px;transform:translateX(-50%)}.bo-shadow{position:absolute;inset:0;border-radius:999px;background:radial-gradient(ellipse 50% 50% at 50% 50%,rgba(23,20,15,.4) 0,rgba(23,20,15,.26) 55%,rgba(23,20,15,0) 100%);transform:scaleX(1);opacity:.35}@media (prefers-reduced-motion:no-preference){.fab-msg-row .bo-shadow{animation:bo-shadow-pulse 1.9s ease-in-out infinite}}@keyframes bo-shadow-pulse{0%{transform:scaleX(1);opacity:.35}4%{transform:scaleX(1.08);opacity:.4}8%{transform:scaleX(.55);opacity:.14}25%{transform:scaleX(1.16);opacity:.42}32%{transform:scaleX(.86);opacity:.26}40%,to{transform:scaleX(1);opacity:.35}}@keyframes bo-drift{0%{transform:translateY(0) scaleY(1);animation-timing-function:cubic-bezier(.55,0,1,.45)}6%{transform:translateY(1.5px) scaleY(.97);animation-timing-function:cubic-bezier(.33,0,.2,1)}14%{transform:translateY(-1px) scaleY(1.02);animation-timing-function:ease-in-out}22%{transform:translateY(-.5px) scaleY(1);animation-timing-function:cubic-bezier(.55,0,1,.45)}25%{transform:translateY(3px) scaleY(.86);animation-timing-function:cubic-bezier(.33,0,.2,1)}30%{transform:translateY(-1.5px) scaleY(1.06);animation-timing-function:ease-in-out}38%{transform:translateY(0) scaleY(1);animation-timing-function:ease-in-out}55%{transform:translateY(-1.5px) scaleY(1)}72%{transform:translateY(.5px) scaleY(1)}88%{transform:translateY(-1px) scaleY(1)}to{transform:translateY(0) scaleY(1)}}.bo-drift{display:inline-flex;animation:bo-drift 3.2s ease-in-out infinite}.ha-fab .bo-drift{animation-duration:3.4s}.fab-msg-row .bo-drift{animation-duration:2.8s}@media (prefers-reduced-motion:reduce){.bo-drift{animation:none}}.fab-msg-row.bot .fab-avatar-me{animation:fabAvatarPop .42s cubic-bezier(.3,1.9,.5,1) both}@keyframes fabAvatarPop{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.ha-avatar .fab-avatar{width:38px;height:38px}.ha-avatar .fab-avatar svg{width:26px;height:13px}@media (prefers-reduced-motion:no-preference){.ha-fab-pop{opacity:0;visibility:hidden}}.ha-fab-pop.ha-fab-ceded{opacity:0!important;visibility:hidden!important;pointer-events:none}.ha-pop-heart{opacity:0}.ha-fab{position:relative;isolation:isolate;width:64px;height:64px;border-radius:50%;border:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:#fff;--fab-grain-tex:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background:var(--fab-grain-tex),var(--bo-coin);background-size:90px,auto;background-blend-mode:soft-light,normal;box-shadow:0 6px 20px -4px color-mix(in srgb,var(--bo-coin) 45%,transparent),0 2px 8px rgba(0,0,0,.12);transition:transform .24s var(--ease-hover),box-shadow .2s var(--ease-hover)}.ha-fab .fab-avatar-me{background:transparent;width:46px;height:46px}.ha-fab .fab-avatar-me svg{width:46px;height:21px;transform:rotate(-6deg);transition:transform .52s cubic-bezier(.5,-.32,.26,1.34)}.ha-fab-compact .fab-avatar-me svg{transform:rotate(7deg)}@keyframes haEngagePop{0%{transform:scale(1) translateY(0);animation-timing-function:cubic-bezier(.33,0,.3,1)}26%{transform:scale(.962) translateY(1.5px);animation-timing-function:cubic-bezier(.22,0,.24,1)}64%{transform:scale(1.048) translateY(-2.5px);animation-timing-function:cubic-bezier(.32,0,.28,1)}to{transform:scale(1) translateY(0)}}@keyframes haReleasePop{0%{transform:scale(1) translateY(0);animation-timing-function:cubic-bezier(.3,0,.3,1)}34%{transform:scale(1.028) translateY(-1.5px);animation-timing-function:cubic-bezier(.25,0,.26,1)}to{transform:scale(1) translateY(0)}}.ha-fab-compact .fab-avatar-me{animation:haEngagePop .66s linear}.ha-fab-releasing .fab-avatar-me{animation:haReleasePop .46s linear}@media (prefers-reduced-motion:reduce){.ha-fab .fab-avatar-me svg{transition:none}.ha-fab-compact .fab-avatar-me,.ha-fab-releasing .fab-avatar-me{animation:none}}.ha-fab.is-idle-tilt-anticipate .fab-avatar-me svg{transform:rotate(-9deg);transition:transform .14s cubic-bezier(.34,0,.64,1)}.ha-fab.is-idle-tilt .fab-avatar-me svg{transform:rotate(5deg)}.ha-fab.is-idle-look-a .fab-avatar-me svg{transform:rotate(-14deg)}.ha-fab.is-idle-look-b .fab-avatar-me svg{transform:rotate(7deg)}.ha-fab .fa-body{display:inline-flex;align-items:center;justify-content:center}.ha-fab.is-idle-look-a .fa-body{animation:haGlanceGatherA .66s linear}.ha-fab.is-idle-look-b .fa-body{animation:haGlanceGatherB .66s linear}@keyframes haGlanceGatherA{0%{transform:scale(1) translateY(0);animation-timing-function:cubic-bezier(.33,0,.3,1)}26%{transform:scale(.962) translateY(1.5px);animation-timing-function:cubic-bezier(.22,0,.24,1)}64%{transform:scale(1.048) translateY(-2.5px);animation-timing-function:cubic-bezier(.32,0,.28,1)}to{transform:scale(1) translateY(0)}}@keyframes haGlanceGatherB{0%{transform:scale(1) translateY(0);animation-timing-function:cubic-bezier(.33,0,.3,1)}26%{transform:scale(.962) translateY(1.5px);animation-timing-function:cubic-bezier(.22,0,.24,1)}64%{transform:scale(1.048) translateY(-2.5px);animation-timing-function:cubic-bezier(.32,0,.28,1)}to{transform:scale(1) translateY(0)}}.ha-fab.is-pill-gaze .fab-avatar-me svg{transform:rotate(var(--gaze-tilt,-16deg)) translateY(var(--gaze-dip,2px))}.ha-fab.is-idle-wink .fa-lens-r{animation:lensWink .62s linear}@media (prefers-reduced-motion:reduce){.ha-fab.is-idle-tilt-anticipate .fab-avatar-me svg{transition:none}.ha-fab.is-idle-look-a .fa-body,.ha-fab.is-idle-look-b .fa-body,.ha-fab.is-idle-wink .fa-lens-r{animation:none}}.ha-fab:hover{transform:scale(1.06);box-shadow:0 10px 30px -4px color-mix(in srgb,var(--bo-coin) 50%,transparent),0 2px 8px rgba(0,0,0,.16)}.ha-fab:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.ha-fab:after,.ha-fab:before{content:"";position:absolute;inset:0;border-radius:50%;border:2.5px solid var(--color-accent);opacity:0;z-index:-1;animation:fabRim 2.6s cubic-bezier(.22,.61,.36,1) infinite;pointer-events:none}.ha-fab:before{animation-delay:-1.3s}.ha-fab-pop .ha-fab:after,.ha-fab-pop .ha-fab:before{border-color:#ff9d1c;border-width:4.5px;box-shadow:0 0 10px 0 color-mix(in oklab,#ff9d1c 85%,transparent),0 0 28px 3px color-mix(in oklab,#ff9d1c 45%,transparent),inset 0 0 8px 0 color-mix(in oklab,#ff9d1c 42%,transparent)}.ha-fab-pop .ha-fab:not(.ha-fab-quiet):after,.ha-fab-pop .ha-fab:not(.ha-fab-quiet):before{animation:fabRimFree 2.1s cubic-bezier(.22,.61,.36,1) infinite}.ha-fab-pop .ha-fab:not(.ha-fab-quiet):before{animation-delay:-1.05s}@keyframes fabRimFree{0%{transform:scale(1);opacity:.95}60%{opacity:.5}to{transform:scale(2.05);opacity:0}}.ha-fab-quiet:after,.ha-fab-quiet:before{border-width:2px;animation-name:fabRimCompact}@keyframes fabRimCompact{0%{opacity:.9;transform:scale(1)}55%{opacity:.55;transform:scale(1.26)}to{opacity:0;transform:scale(1.46)}}.ha-fab-pop .ha-fab-quiet:after,.ha-fab-pop .ha-fab-quiet:before{border-width:3.5px;animation-name:fabRimHeld;animation-duration:2.4s}.ha-fab-pop .ha-fab-quiet:before{animation-delay:-1.2s}@keyframes fabRimHeld{0%{opacity:.9;transform:scale(1)}60%{opacity:.3}to{opacity:0;transform:scale(1.85)}}@media (prefers-reduced-motion:reduce){.ha-fab{transition:none}.ha-fab:after,.ha-fab:before{animation:none;opacity:0}}.fab-avatar-me .fa-frame{fill:#fff;stroke:none}.fab-avatar-me .fa-thin{fill:none;stroke:#fff;stroke-width:2.2;stroke-linecap:round}.fab-avatar-you{background:#fff;border:1.5px solid var(--color-neon-cyan);color:#46413a;box-shadow:0 2px 8px -5px rgba(23,21,15,.35);overflow:hidden}.fab-avatar-img{width:100%;height:100%;object-fit:cover;object-position:center;border-radius:inherit}.fab-msg-stack{display:flex;flex-direction:column;align-items:flex-start;min-width:0;max-width:88%}.fab-msg-stack>.fab-msg{max-width:100%}.fab-msg-row:has(.fab-msg-meta)>.bo-stage,.fab-msg-row:has(.fab-msg-meta)>.fab-avatar{margin-bottom:23px}.fab-msg-meta{margin:5px 0 0 2px;font-family:var(--font-display),Georgia,serif;font-size:13px;line-height:18px;letter-spacing:0;color:color-mix(in srgb,var(--color-fg) 62%,transparent);white-space:nowrap}.fab-msg-meta span{margin:0 2px;color:color-mix(in srgb,var(--color-fg) 34%,transparent)}.fab-msg-row.user .fab-msg-stack{align-items:flex-end}.fab-msg-row.user .fab-msg-meta{margin-left:0;margin-right:2px;text-align:right}.fab-msg{max-width:88%;padding:9px 13px;border-radius:14px;font-size:14px;line-height:1.5;animation-duration:.55s;animation-timing-function:var(--fab-ease-bloom,var(--ease-entry));animation-fill-mode:both}.fab-msg.bot{background:#e1eefb;box-shadow:inset 0 0 0 1px #a5c2e6;color:var(--color-fg);border-bottom-left-radius:0;transform-origin:0 100%;animation:fabMsgGrowBot .36s var(--ease-entry) both,fabMsgFadeBot .28s var(--ease-hover) .04s both;position:relative}.fab-msg.user{background:var(--color-accent);color:#fff;border-bottom-right-radius:0;animation-name:fabMsgInUser}@keyframes fabMsgGrowBot{0%{transform:scale(.84,.78)}to{transform:scale(1)}}@keyframes fabMsgReveal{0%{max-height:44px}to{max-height:640px}}.fab-msg.bot:has(.fab-msg-text-words):not(.ha-thread *){overflow:hidden;animation:fabMsgGrowBot .36s var(--ease-entry) both,fabMsgFadeBot .28s var(--ease-hover) .04s both,fabMsgReveal 1.5s cubic-bezier(.3,.6,.4,1) both}@keyframes fabMsgFadeBot{0%{opacity:0}to{opacity:1}}@keyframes fabMsgInUser{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.fab-msg.user{animation-duration:.4s;animation-timing-function:var(--ease-hover)}.fab-msg-row.user .fab-avatar-you{animation:fabMsgTextIn .32s var(--ease-hover) .14s both}.fab-panel-body .fab-msg-row:first-child .fab-msg{animation-delay:.16s}.fab-msg-group{margin-top:16px}.fab-msg-group+.fab-msg-group{margin-top:14px}.fab-msg-item-name{color:var(--color-accent);font-weight:600}.fab-msg-group-label{display:block;font-size:13.5px;font-weight:600;color:var(--color-fg);margin-bottom:6px}.fab-msg-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}.fab-msg-list li{position:relative;padding-left:14px;font-size:13.5px;line-height:1.5}.fab-msg-list li:before{content:"";position:absolute;left:0;top:.65em;width:5px;height:5px;border-radius:999px;background:var(--color-accent)}.fab-msg-text{display:inline-block;animation:fabMsgTextIn .38s var(--ease-hover) .22s both}.fab-msg-text-words{animation:none}.fab-word{display:inline-block;opacity:0;animation:fabWordIn .3s var(--ease-hover) both}.fab-msg-para{display:block}.fab-msg-para+.fab-msg-para{margin-top:.6em}.fab-msg-bullets{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}.fab-msg-bullets+.fab-msg-bullets,.fab-msg-bullets+.fab-msg-para,.fab-msg-para+.fab-msg-bullets{margin-top:.6em}.fab-msg-bullets li{position:relative;padding-left:14px;font-size:13.5px;line-height:1.5}.fab-msg-bullets li:before{content:"";position:absolute;left:0;top:.65em;width:5px;height:5px;border-radius:999px;background:var(--color-accent)}.fab-word-bold{font-weight:600}.fab-word-entity{color:var(--color-accent);font-weight:600}.fab-msg.bot .fab-word-entity{color:var(--color-accent-hover)}.fab-word-italic{font-style:italic}@keyframes fabWordIn{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.fab-msg-inline-action{display:inline;font:inherit;color:var(--color-accent);background:none;border:none;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.fab-msg-inline-action:focus-visible,.fab-msg-inline-action:hover{text-decoration-thickness:2px}.fab-msg-inline-action:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}.fab-msg-flair{display:inline-block;vertical-align:-.12em;margin-left:6px;animation:fabMsgTextIn .32s var(--ease-hover) 1.6s both}@media (prefers-reduced-motion:reduce){.fab-msg-flair{animation:none}}.fab-msg-link{display:inline-flex;align-items:center;gap:6px;margin-top:10px;font-size:13px;font-weight:600;color:var(--color-accent);animation:fabMsgTextIn .32s var(--ease-hover) .42s both}.fab-msg-link+.fab-msg-link{display:flex;margin-top:4px}.fab-msg-link-chip{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:none;border-radius:50%;color:var(--chip,var(--color-accent));background:#ffffff;box-shadow:inset 0 0 0 1.25px color-mix(in oklab,var(--chip,var(--color-accent)) 75%,#ffffff)}.fab-msg-link:hover{text-decoration:underline;text-underline-offset:3px}.fab-msg-link-arrow{transition:transform .25s var(--ease-hover)}.fab-msg-link:hover .fab-msg-link-arrow{transform:translateX(3px)}@keyframes fabMsgTextIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.fab-msg-group{animation:fabMsgTextIn .32s var(--ease-hover) both}.fab-msg-group:first-of-type{animation-delay:.24s}.fab-msg-group:nth-of-type(2){animation-delay:.44s}.fab-msg-group:nth-of-type(3){animation-delay:.64s}.fab-msg-list li{animation:fabMsgTextIn .3s var(--ease-hover) both}.fab-msg-group:first-of-type .fab-msg-list li:first-child{animation-delay:.32s}.fab-msg-group:first-of-type .fab-msg-list li:nth-child(2){animation-delay:.4s}.fab-msg-group:first-of-type .fab-msg-list li:nth-child(3){animation-delay:.48s}.fab-msg-group:first-of-type .fab-msg-list li:nth-child(n+4){animation-delay:.56s}.fab-msg-group:nth-of-type(2) .fab-msg-list li:first-child{animation-delay:.52s}.fab-msg-group:nth-of-type(2) .fab-msg-list li:nth-child(2){animation-delay:.6s}.fab-msg-group:nth-of-type(2) .fab-msg-list li:nth-child(3){animation-delay:.68s}.fab-msg-group:nth-of-type(2) .fab-msg-list li:nth-child(n+4){animation-delay:.76s}.fab-msg-group:nth-of-type(3) .fab-msg-list li:first-child{animation-delay:.72s}.fab-msg-group:nth-of-type(3) .fab-msg-list li:nth-child(2){animation-delay:.8s}.fab-msg-group:nth-of-type(3) .fab-msg-list li:nth-child(n+3){animation-delay:.88s}.fab-msg-content{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:8px}.fab-msg-copy,.fab-msg-group,.fab-msg-link,.fab-msg-offer{width:100%;margin:0}.fab-msg-offer{display:block;font:inherit;line-height:1.5;animation:fabMsgTextIn .32s var(--ease-hover) .42s both}.fab-msg-content .fab-msg-group+.fab-msg-group{margin-top:0}.fab-msg-content .fab-msg-link,.fab-msg-content .fab-msg-link+.fab-msg-link{display:inline-flex;width:100%;margin-top:0}@media (prefers-reduced-motion:reduce){.fab-msg,.fab-msg-group,.fab-msg-link,.fab-msg-list li,.fab-msg-row.bot .fab-avatar-me,.fab-msg-row.user .fab-avatar-you,.fab-msg-text,.fab-msg.bot,.fab-msg.user,.fab-word{animation:none}.fab-word{opacity:1}}.ha-thread{mask-image:linear-gradient(180deg,transparent 0 6px,#000 7px 100%);-webkit-mask-image:linear-gradient(180deg,transparent 0 6px,#000 7px 100%)}.ha-thread .fab-msg.bot{background:#e1eefb;border:1px solid #a5c2e6;box-shadow:0 10px 24px -14px rgba(23,21,15,.32);transform-origin:0 0;animation:fabMsgGrowBot .36s var(--ease-entry) both,fabMsgFadeBot .28s var(--ease-hover) .04s both}.ha-thinking-row .ha-thinking-text{color:#5c5344;font-size:13.5px;--tp-base:#5c5344;--tp-sheen:#b4472f}.fab-thinking-eight.ha-thinking-eight{width:25px;height:25px;box-shadow:0 2px 8px -3px rgba(23,21,15,.35)}.fab-typing.ha-typing{background:#e1eefb;border:1px solid #a5c2e6;box-shadow:0 8px 20px -14px rgba(23,21,15,.3)}.fab-typing.ha-typing i{width:7px;height:7px;background:#b4472f}.fab-msg.bot.fab-greeting{max-width:100%;background:#e1eefb;border:1px solid #a5c2e6;color:var(--color-fg);font-size:14.5px;border-bottom-left-radius:0}.fab-context-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}.fab-chip-deal{opacity:0;animation:fabPillDeal .32s var(--fab-ease-bloom,var(--ease-entry)) both}.fab-context-chips.fab-seen .fab-chip-deal{animation:none;opacity:1}@media (prefers-reduced-motion:reduce){.fab-chip-deal{animation:none;opacity:1}}.fab-suggestions{display:flex;flex-wrap:wrap;gap:7px}.fab-panel .fab-suggestions{flex-direction:column;align-items:stretch}.fab-panel .fab-suggestion{width:100%;justify-content:flex-start}.fab-panel .fab-context-chips{flex-direction:column;align-items:stretch}.fab-panel .fab-context-chips .ha-pill{width:100%;justify-content:flex-start}.fab-suggestion{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--color-rule);background:var(--color-bg);color:var(--color-fg);font-size:12.5px;font-weight:500;padding:11px 16px;border-radius:999px;cursor:pointer;opacity:0;white-space:nowrap;flex-shrink:0;animation:fabPillDeal .32s var(--fab-ease-bloom,var(--ease-entry)) both;--sug:var(--color-fg);border-color:color-mix(in srgb,var(--sug) 75%,transparent);background:color-mix(in srgb,var(--sug) 16%,var(--color-bg));--pill-dx:0px;transition:border-color .15s var(--ease-hover),background .15s var(--ease-hover),color .15s var(--ease-hover),padding .22s var(--ease-hover),gap .22s var(--ease-hover),transform .18s var(--ease-hover)}.fab-suggestion:focus-visible,.fab-suggestion:hover{border-color:transparent;background:color-mix(in oklab,var(--sug) 85%,#12140f);color:#fff;padding-left:22px;padding-right:22px;gap:11px;transform:translateY(-1px)}.fab-suggestion:focus-visible .fab-suggestion-icon,.fab-suggestion:hover .fab-suggestion-icon{color:currentColor;transform:scale(1.1)}.fab-suggestion:active{transform:translateY(0) scale(.98)}.fab-suggestion:focus-visible{outline:2px solid var(--sug);outline-offset:2px}.fab-suggestion-icon{display:inline-flex;transition:transform .18s var(--ease-hover)}.fab-suggestion-icon svg{width:13px;height:13px}.fab-suggestion--full{width:100%;justify-content:flex-start;animation:none}.fab-suggestion--full .fab-suggestion-icon{background:#fff;border:1px solid color-mix(in srgb,var(--sug) 28%,transparent);border-radius:9999px;width:26px;height:26px;align-items:center;justify-content:center;flex-shrink:0}.fab-suggestion--full:focus-visible .fab-suggestion-icon,.fab-suggestion--full:hover .fab-suggestion-icon{color:var(--sug);border-color:transparent}.fab-pill-more{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:999px;border:1px solid var(--color-rule);background:var(--color-bg);color:var(--color-accent);cursor:pointer;opacity:0;animation:fabPillDeal .32s var(--fab-ease-bloom,var(--ease-entry)) both;transition:border-color .15s var(--ease-hover),transform .15s var(--ease-hover)}.fab-pill-more:focus-visible,.fab-pill-more:hover{border-color:var(--color-accent);transform:translateY(-1px)}.fab-pill-more:active{transform:translateY(0) scale(.94)}.fab-pill-more-arrow{width:11px;height:8px;fill:currentColor}.fab-pill-more--text{width:auto;height:auto;padding:6px 14px;font-size:13px;font-weight:500;white-space:nowrap}.fab-panel .fab-pill-more--text{width:100%;padding:9px 14px;border-color:rgba(23,21,15,.3)}@media (prefers-reduced-motion:reduce){.fab-pill-more{animation:none;opacity:1}}.fab-suggestion-t1{--sug:#66788f;border-color:rgba(102,120,143,.75);background:color-mix(in srgb,#66788f 16%,var(--color-bg))}.fab-suggestion-t2{--sug:#b8862f;border-color:rgba(184,134,47,.75);background:color-mix(in srgb,#b8862f 16%,var(--color-bg))}.fab-suggestion-t3{--sug:#3d8a8f;border-color:rgba(61,138,143,.75);background:color-mix(in srgb,#3d8a8f 16%,var(--color-bg))}.fab-suggestion-t4{--sug:#6b82c9;border-color:rgba(107,130,201,.75);background:color-mix(in srgb,#6b82c9 16%,var(--color-bg))}.fab-suggestion-t5{--sug:#8a63b8;border-color:rgba(138,99,184,.75);background:color-mix(in srgb,#8a63b8 16%,var(--color-bg))}.fab-suggestion-t6{--sug:#3d8a8f;border-color:rgba(61,138,143,.75);background:color-mix(in srgb,#3d8a8f 16%,var(--color-bg))}.fab-suggestion-t7{--sug:#a8517a;border-color:rgba(168,81,122,.75);background:color-mix(in srgb,#a8517a 16%,var(--color-bg))}.fab-suggestion .fab-suggestion-icon{color:var(--sug)}.fab-suggestion:hover .fab-suggestion-icon{color:#fff}@keyframes fabCardIn{0%{opacity:0;transform:translateY(8px) scale(.94)}to{opacity:1;transform:none}}@keyframes fabPillDeal{0%{opacity:0;transform:translate(var(--pill-dx,0),8px) scale(.94)}to{opacity:1;transform:none}}@keyframes fabNudgeIn{0%{opacity:0;transform:translateY(14px) scale(.88)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.fab-suggestion{animation:none;opacity:1}.fab-suggestion:focus-visible,.fab-suggestion:hover,.fab-suggestion:hover .fab-suggestion-icon{transform:none}}.fab-action-card{display:flex;align-items:center;gap:10px;align-self:stretch;padding:10px 12px;border:1px solid transparent;background:var(--color-fg);border-radius:14px;cursor:pointer;text-align:left;opacity:0;animation:fabNudgeIn .5s var(--fab-ease-bloom,var(--ease-entry)) both;box-shadow:0 1px 4px -2px rgba(0,0,0,.08);transition:border-color .15s var(--ease-hover),background .15s var(--ease-hover),box-shadow .15s var(--ease-hover)}.fab-action-card:focus-visible,.fab-action-card:hover{background:color-mix(in srgb,var(--color-fg) 86%,var(--color-bg));box-shadow:0 6px 16px -8px rgba(0,0,0,.4)}.fab-action-card:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.fab-action-icon{width:32px;height:32px;border-radius:10px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.14);color:var(--color-bg)}.fab-action-text{display:flex;flex-direction:column;gap:1px;min-width:0}.fab-action-title{font-size:13px;font-weight:600;color:var(--color-bg)}.fab-action-desc{font-size:11.5px;color:color-mix(in srgb,var(--color-bg) 72%,var(--color-fg))}.fab-action-arrow{margin-left:auto;flex-shrink:0;color:#d4ff5c}@media (prefers-reduced-motion:reduce){.fab-action-card{animation:none;opacity:1}}.fab-thinking-row{align-items:center;animation:fabTypingIn .24s var(--fab-ease-bloom,var(--ease-entry)) both}.fab-thinking-row.is-leaving{animation:fabRowOut .32s var(--ease-hover) both}.fab-thinking-text{display:flex;align-items:center;min-height:34px;font-size:13px;color:var(--color-fg-quiet);--tp-base:var(--color-fg-quiet);--tp-sheen:var(--color-accent)}.fab-thinking-phrase-stack{display:grid}.fab-thinking-phrase{grid-area:1/1;white-space:nowrap;background-image:linear-gradient(100deg,var(--tp-base) 0,var(--tp-base) 38%,var(--tp-sheen) 50%,var(--tp-base) 62%,var(--tp-base) 100%);background-size:220% 100%;background-repeat:no-repeat;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:fabPhraseShimmer 2.4s linear infinite}.fab-thinking-phrase.is-entering{animation:fabPhraseIn .32s var(--ease-hover) both,fabPhraseShimmer 2.4s linear infinite}.fab-thinking-phrase.is-leaving{animation:fabPhraseOut .32s var(--ease-hover) both,fabPhraseShimmer 2.4s linear infinite}@keyframes fabPhraseShimmer{0%{background-position:180% 0}to{background-position:-80% 0}}@keyframes fabPhraseIn{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}@keyframes fabPhraseOut{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(-2px)}}@keyframes fabRowOut{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(-3px)}}.fab-thinking-eight{width:23px;height:23px;box-sizing:border-box;padding:3px;border:1px solid #b4472f;border-radius:50%;background:#eaff00;flex-shrink:0;margin-right:6px;overflow:visible;animation:fabEightSpin 6.2s linear infinite}.fab-thinking-eight circle{stroke:#b4472f}.fab-thinking-eight .e-top{animation:fabEightTop 2.6s linear infinite,fabEightBreatheTop 7s ease-in-out infinite}.fab-thinking-eight .e-bot{animation:fabEightBot 2.6s linear infinite,fabEightBreatheBot 7s ease-in-out infinite;animation-delay:-1.3s,-2.8s}@media (prefers-reduced-motion:reduce){.fab-thinking-eight,.fab-thinking-eight .e-bot,.fab-thinking-eight .e-top,.fab-thinking-row,.fab-thinking-row.is-leaving{animation:none}.fab-thinking-phrase,.fab-thinking-phrase.is-entering,.fab-thinking-phrase.is-leaving{animation:none;opacity:1;transform:none;background:none;-webkit-text-fill-color:currentColor;color:inherit}}.fab-typing{display:flex;align-items:center;gap:5px;align-self:flex-start;min-height:34px;padding:11px 14px;background:var(--color-bg-soft);border:1px solid rgba(23,21,15,.16);box-shadow:0 6px 16px -12px rgba(23,21,15,.3);border-radius:14px;border-bottom-left-radius:4px;animation:fabTypingIn .24s var(--fab-ease-bloom,var(--ease-entry)) both}.fab-typing.is-leaving{animation:fabRowOut .32s var(--ease-hover) both}@keyframes fabTypingIn{0%{opacity:0;transform:translateY(6px) scale(.9)}to{opacity:1;transform:none}}.fab-typing i{width:6px;height:6px;border-radius:50%;background:color-mix(in srgb,var(--color-accent) 55%,var(--color-fg-quiet));animation:fabTypingWave 1.9s ease-in-out infinite}.fab-typing i:nth-child(2){animation-delay:-.6333s}.fab-typing i:nth-child(3){animation-delay:-1.2667s}@keyframes fabTypingWave{0%,to{transform:translateY(0);opacity:.45}50%{transform:translateY(-2px);opacity:1}}@media (prefers-reduced-motion:reduce){.fab-typing,.fab-typing i{animation:none}.fab-typing i{opacity:.8}}.fab-chat-form{gap:8px;padding:12px 14px;border-top:1px solid color-mix(in oklab,var(--color-fg) 20%,transparent);flex-shrink:0}.fab-chat-field,.fab-chat-form{display:flex;align-items:center}.fab-chat-field{position:relative;flex:1}.fab-chat-input{flex:1;border:1px solid #6d685e;border-radius:999px;min-height:48px;padding:14px 50px 14px 18px;font-size:16px;color:var(--color-fg);background:var(--color-bg-soft);outline:none;transition:border-color .25s var(--ease-hover),background .25s var(--ease-hover),box-shadow .25s var(--ease-hover),opacity .4s var(--ease-entry),transform .4s var(--ease-entry)}.fab-input-pending .fab-chat-input{opacity:0;pointer-events:none}.fab-input-pending .fab-chat-send{opacity:0;transform:translateY(-50%);pointer-events:none}.fab-chat-input::placeholder{color:var(--color-fg-quiet)}.fab-chat-input:focus,.fab-chat-input:focus-visible{border-color:color-mix(in oklab,var(--color-accent) 55%,var(--color-rule));background:var(--color-bg);box-shadow:0 0 0 5px color-mix(in oklab,var(--color-accent) 8%,transparent)}.fab-chat-send{width:38px;height:38px;border-radius:50%;border:1px solid transparent;background:var(--color-accent);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;position:absolute;right:5px;top:50%;transform:translateY(-50%);box-shadow:0 3px 10px -4px color-mix(in srgb,var(--color-accent) 60%,transparent);transition:background .15s var(--ease-hover),border-color .15s var(--ease-hover),box-shadow .15s var(--ease-hover),transform .42s var(--ease-entry),opacity .42s var(--ease-entry)}.fab-chat-send:hover:not(:disabled){background:var(--color-accent-hover);transform:translateY(-50%) scale(1.07);transition:transform .15s var(--ease-hover),background .15s var(--ease-hover)}.fab-chat-send:active:not(:disabled){transform:translateY(-50%) scale(.88);transition:transform .1s var(--ease-hover)}.fab-chat-send:disabled{background:color-mix(in oklab,var(--color-accent) 70%,var(--color-bg-soft));border-color:transparent;color:#fff;box-shadow:none;cursor:not-allowed}.fab-chat-send:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.fab-chat-send.is-sent{animation:fabSendPop .4s var(--fab-ease-bloom,var(--ease-hover))}@keyframes fabSendPop{0%{transform:translateY(-50%) scale(1) rotate(0)}35%{transform:translateY(-50%) scale(.8) rotate(-8deg)}70%{transform:translateY(-50%) scale(1.12) rotate(4deg)}to{transform:translateY(-50%) scale(1) rotate(0)}}@media (prefers-reduced-motion:reduce){.fab-chat-send.is-sent{animation:none}.fab-chat-input,.fab-chat-send{transition:none}.fab-input-pending .fab-chat-input{opacity:1;transform:none;pointer-events:auto}.fab-input-pending .fab-chat-send{opacity:1;transform:translateY(-50%);pointer-events:auto}}.fab-field{display:flex;flex-direction:column;gap:5px}.fab-field label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-fg-quiet)}.fab-field input,.fab-field textarea{border:1px solid #6d685e;border-radius:10px;padding:9px 12px;font-size:16px;color:var(--color-fg);background:var(--color-bg-soft);outline:none;resize:none;font-family:inherit;transition:border-color .15s var(--ease-hover),background .15s var(--ease-hover)}.fab-field input::placeholder,.fab-field textarea::placeholder{color:var(--color-fg-quiet,#98948b);opacity:1}.fab-field input:focus-visible,.fab-field textarea:focus-visible{border-color:var(--color-accent);background:var(--color-bg)}.fab-submit{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:999px;padding:11px 18px;font-size:14px;font-weight:600;color:#fff;background:var(--color-fg);cursor:pointer;transition:background .2s var(--ease-hover),transform .15s var(--ease-hover)}.fab-submit:hover:not(:disabled){background:var(--color-accent)}.fab-submit:active:not(:disabled){transform:scale(.96)}.fab-submit:disabled{opacity:.6;cursor:not-allowed}.fab-submit:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.fab-attach-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;align-self:stretch;border:1px dashed rgba(23,21,15,.28);border-radius:999px;padding:7px 14px;font-size:13px;font-weight:500;font-family:inherit;color:var(--color-fg-muted);background:transparent;cursor:pointer;transition:border-color .2s var(--ease-hover),color .2s var(--ease-hover)}.fab-attach-btn:focus-visible,.fab-attach-btn:hover{border-color:var(--color-accent);color:var(--color-accent);outline:none}.fab-attach-chip{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;max-width:100%;border:1px solid var(--color-rule);border-radius:999px;padding:7px 10px 7px 14px;font-size:13px;font-weight:500;color:var(--color-fg);background:var(--color-bg-soft)}.fab-attach-chip .fab-attach-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:210px}.fab-attach-chip .fab-attach-size{color:var(--color-fg-quiet);font-size:12px;flex-shrink:0}.fab-attach-remove{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;border-radius:999px;padding:0;color:var(--color-fg-quiet);background:transparent;cursor:pointer;flex-shrink:0;transition:color .15s var(--ease-hover),background .15s var(--ease-hover)}.fab-attach-remove:focus-visible,.fab-attach-remove:hover{color:#fff;background:var(--color-accent);outline:none}.fab-note{font-size:13px;line-height:1.5;color:var(--color-fg-muted)}.fab-note a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}.fab-sent-ack{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;padding:20px 16px}.fab-sent-mark{position:relative;width:44px;height:44px;opacity:1;animation:fabSentMarkIn .55s var(--ease-hover) .5s both}.fab-sent-mark-heart{position:absolute;inset:0;width:44px;height:44px;color:var(--color-accent)}.fab-sent-mark-check{position:absolute;left:50%;top:50%;width:20px;height:20px;transform:translate(-50%,-50%);color:var(--color-neon)}.fab-sent-ack-text{font-size:14px;line-height:1.5;color:var(--color-fg-muted);opacity:1;animation:fabSentTextIn .5s var(--ease-hover) .68s both}@keyframes fabSentMarkIn{0%{opacity:0;transform:translateY(6px) scale(.92)}to{opacity:1;transform:none}}@keyframes fabSentTextIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.fab-sent-ack-text,.fab-sent-mark{animation:none}}@media (max-width:480px){.fab-panel{right:calc(12px + env(safe-area-inset-right, 0px));left:calc(12px + env(safe-area-inset-left, 0px));width:auto}.fab-group{right:calc(16px + env(safe-area-inset-right, 0px));bottom:calc(16px + env(safe-area-inset-bottom, 0px))}.fab-suggestion{font-size:14px;padding:9px 15px}.fab-suggestion:focus-visible,.fab-suggestion:hover{padding-left:22px;padding-right:22px}.fab-panel{height:min(680px,calc(100vh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 96px));height:min(680px,calc(100svh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 96px))}}@keyframes fab-field-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fab-send-in{0%{opacity:0;transform:translateY(12px) scale(.94)}70%{opacity:1;transform:translateY(0) scale(1.03)}to{opacity:1;transform:translateY(0) scale(1)}}.fab-panel.is-open .fab-tabpanel.is-active .fab-form>*{opacity:0;animation:fab-field-in .42s cubic-bezier(.16,1,.3,1) forwards}.fab-panel.is-open .fab-tabpanel.is-active .fab-form>:first-child{animation-delay:.06s}.fab-panel.is-open .fab-tabpanel.is-active .fab-form>:nth-child(2){animation-delay:.14s}.fab-panel.is-open .fab-tabpanel.is-active .fab-form>:nth-child(3){animation-delay:.22s}.fab-panel.is-open .fab-tabpanel.is-active .fab-form>:nth-child(4){animation-delay:.3s}.fab-panel.is-open .fab-tabpanel.is-active .fab-form>:nth-child(5){animation-delay:.38s}.fab-panel.is-open .fab-tabpanel.is-active .fab-form>button[type=submit]{animation-name:fab-send-in;animation-duration:.5s;animation-delay:.44s}@media (prefers-reduced-motion:reduce){.fab-panel.is-open .fab-tabpanel.is-active .fab-form>*{opacity:1;animation:none}}.fab-seen,.fab-seen :not(.bo-bounce):not(.bo-drift):not(.fab-avatar-img){animation:none!important;opacity:1!important;transform:none!important}.fab-main-wrap{position:relative}.fab-group{pointer-events:none}.fab-main{pointer-events:auto}.fab-group.is-engaged:before,.fab-group.is-open:before,.fab-group:hover:before{content:"";position:absolute;inset:-24px;pointer-events:auto}@media (max-width:1023px) and (prefers-reduced-motion:no-preference){.fab-group.fab-eight-pending{opacity:0;visibility:hidden;pointer-events:none}.fab-group.fab-eight-arrive .fab-main{animation:fabEightPop .55s cubic-bezier(.34,1.56,.64,1) both}}@keyframes fabEightPop{0%{transform:scale(.25);opacity:0}to{transform:scale(1);opacity:1}}.fab-peek-face{display:none}@media (max-width:1023px){.fab-main:not(.fab-main--coin) .fab-peek-face{display:inline-flex}.fab-main:not(.fab-main--coin)>:not(.fab-peek-face){display:none}.fab-group .fab-main:not(.fab-main--coin),.fab-group.is-engaged .fab-main:not(.fab-main--coin),.fab-group.is-open .fab-main:not(.fab-main--coin),.fab-group:hover .fab-main:not(.fab-main--coin){width:44px;height:44px;background:none;box-shadow:none;transform:none;align-items:flex-end;padding-bottom:4px}.fab-main:not(.fab-main--coin):after,.fab-main:not(.fab-main--coin):before{display:none}.fab-group.fab-eight-arrive .fab-main:not(.fab-main--coin){animation:none}.fab-command-rail{display:none}}.ha-float-root{position:fixed;z-index:200;top:205px;right:calc(24px + env(safe-area-inset-right, 0px));width:max-content;max-width:calc(100vw - 32px)}.ha-float-root .ha-column,.ha-float-root .hero-ask{min-height:0}.ha-float-root .ha-bubble{min-width:470px}.ha-float-root .ha-contact-panel{max-height:calc(100vh - 205px - 24px - 120px);overflow-y:auto;scrollbar-width:none}.ha-float-root .ha-contact-panel::-webkit-scrollbar{display:none}.fab-avatar-depth{position:absolute;inset:0;pointer-events:none}.fab-avatar-depth-arc{fill:none;stroke:url(#fabDepthGrad);stroke-width:4}.fab-group .fab-avatar-depth,.ha-fab .fab-avatar-depth,.pg-dock .fab-avatar-depth{display:none}