.fgl{position:fixed;z-index:70;display:flex;align-items:flex-end;gap:10px;right:max(18px,env(safe-area-inset-right,0px));bottom:calc(18px + env(safe-area-inset-bottom,0px));font-family:Fredoka,Inter,ui-rounded,system-ui,sans-serif}.fgl-hello{border:0;cursor:pointer;margin-bottom:14px;padding:9px 14px;border-radius:1.2rem 1.2rem .3rem;max-width:240px;text-align:left;font:600 14px/1.35 Fredoka,Inter,ui-rounded,system-ui,sans-serif;color:var(--clay-text, #3b2a1e);background:radial-gradient(130% 80% at 25% 0%,var(--clay-sheen, rgba(255, 255, 255, .9)),transparent 55%),var(--clay-paper, #fffaf2);box-shadow:inset 0 2px 0 var(--clay-sheen, rgba(255, 255, 255, .9)),0 5px 0 var(--clay-paper-edge, #ecd9c1),0 16px 26px -12px var(--clay-cast, rgba(40, 20, 0, .45));animation:fgl-pop .5s cubic-bezier(.3,1.5,.5,1) both;transform-origin:100% 100%}.fgl-btn{position:relative;flex:none;width:68px;height:68px;padding:0;border:0;border-radius:50%;cursor:pointer;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;background:radial-gradient(ellipse 15% 9% at 73% 81%,#ffffff6b,#fff0),radial-gradient(circle at 46% 42%,#ffc48c1a,#ffa05a29 48%,#fb7a2e6b 72%,#ec5c1ab3 90%,#ffa0508c);-webkit-backdrop-filter:blur(2px) saturate(1.4);backdrop-filter:blur(2px) saturate(1.4);box-shadow:inset 0 0 16px 3px #fb7a2e66,inset 0 -8px 14px -4px #ffd27859,0 0 16px -2px #fb7a2e66,0 14px 24px -12px #28140073;transition:transform .15s cubic-bezier(.3,1.5,.5,1),box-shadow .15s ease,filter .2s;animation:fgl-wobble 4.5s ease-in-out infinite}.fgl-btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;border-radius:50%;pointer-events:none;opacity:.75;background:conic-gradient(from 200deg,#ff8c32b3,#ff607873,#ffcd5a99,#ff7828b3,#ffaa6e66,#ff8c32b3);-webkit-mask:radial-gradient(circle,transparent 60%,#000 86%,rgba(0,0,0,.6) 100%);mask:radial-gradient(circle,transparent 60%,#000 86%,rgba(0,0,0,.6) 100%);animation:fgl-swirl 9s linear infinite}.fgl-btn:before{content:"";position:absolute;left:9%;top:11%;width:42%;height:21%;z-index:3;border-radius:50%;pointer-events:none;transform:rotate(-35deg);background:radial-gradient(ellipse at 50% 50%,#fffffff2,#ffffff80 40%,#fff0 70%)}.fgl-btn:hover{filter:brightness(1.06) saturate(1.1);transform:scale(1.05)}.fgl-btn:hover .fgl-face{transform:translateY(-4px) rotate(-6deg)}.fgl-btn:active{transform:scale(.93)}.fgl-btn:focus-visible{outline:3px solid #1b7f78;outline-offset:3px}.fgl-dragging .fgl-btn,.fgl-dragging .fgl-btn:active{cursor:grabbing;transform:scale(1.1);box-shadow:inset 0 0 16px 3px #fb7a2e66,inset 0 -8px 14px -4px #ffd27859,0 0 20px #fb7a2e73,0 24px 34px -14px #28140080}.fgl-face{position:absolute;z-index:1;left:11px;top:9px;width:46px;height:50px;-o-object-fit:contain;object-fit:contain;pointer-events:none;filter:drop-shadow(0 3px 4px rgba(80,40,10,.3));transition:transform .25s cubic-bezier(.3,1.5,.5,1);animation:fgl-bob 3.2s ease-in-out infinite}.fgl-popping .fgl-btn{animation:fgl-burst .21s ease-out forwards;pointer-events:none}.fgl-popping .fgl-face{visibility:hidden}.fgl-burst{position:absolute;right:0;bottom:0;width:68px;height:68px;border-radius:50%;pointer-events:none;box-shadow:0 0 0 2px #ffa05abf;animation:fgl-ring .22s ease-out forwards}.fgl-burst i{position:absolute;left:50%;top:50%;width:8px;height:8px;margin:-4px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff 0,#fff 20%,#ffa050e6 50%,#f0641e8c);transform:rotate(var(--a)) translateY(-30px);animation:fgl-drop .24s ease-out forwards}@keyframes fgl-burst{45%{transform:scale(1.22);opacity:1}to{transform:scale(1.45);opacity:0}}@keyframes fgl-ring{0%{transform:scale(1);opacity:1}to{transform:scale(1.7);opacity:0}}@keyframes fgl-drop{to{transform:rotate(var(--a)) translateY(-58px) scale(.35);opacity:0}}@keyframes fgl-wobble{25%{scale:1.025 .975}50%{scale:1}75%{scale:.98 1.02}}@keyframes fgl-swirl{to{transform:rotate(360deg)}}.fgl-btn.fgl-working .fgl-face{animation-duration:1.4s}@keyframes fgl-bob{50%{transform:translateY(-3px)}}.fgl-badge{position:absolute;z-index:3;top:-6px;right:-4px;min-width:24px;height:24px;padding:0 7px;border-radius:999px;display:grid;place-items:center;font:700 13px Fredoka,Inter,ui-rounded,system-ui,sans-serif;color:#fff;background:#2f6fd1;box-shadow:0 0 0 3px var(--clay-paper, #fffaf2),0 3px #1d4f9c;animation:fgl-badge 1.6s ease-in-out infinite}@keyframes fgl-badge{50%{transform:scale(1.12);box-shadow:0 0 0 3px var(--clay-paper, #fffaf2),0 3px #1d4f9c,0 0 0 8px #2f6fd12e}}@keyframes fgl-pop{0%{opacity:0;transform:scale(.7) translateY(10px)}}@media (prefers-reduced-motion: reduce){.fgl-hello,.fgl-face,.fgl-badge,.fgl-btn,.fgl-btn:after{animation:none}.fgl-btn,.fgl-face{transition:none}.fgl-dragging .fgl-btn,.fgl-dragging .fgl-btn:active{transform:none}}.fgl-loading{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:grid;place-items:center;padding:16px;font-family:Fredoka,Inter,ui-rounded,system-ui,sans-serif}.fgl-loading-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#3b2a1e66;animation:fgl-fade .2s ease-out both}body.teacher-dark .fgl-loading-scrim{background:#0000008c}.fgl-loading-card{position:relative;width:min(320px,100%);padding:22px 24px 24px;border-radius:2rem;display:grid;justify-items:center;gap:14px;color:var(--clay-text, #3b2a1e);background:radial-gradient(120% 70% at 50% 0%,#ffe3c2 0%,transparent 70%),var(--clay-paper, #fffaf2);box-shadow:inset 0 3px 0 var(--clay-sheen, rgba(255, 255, 255, .9)),0 10px 0 var(--clay-paper-edge, #ecd9c1),0 28px 60px -12px var(--clay-cast, rgba(40, 20, 0, .45));animation:fgl-pop .4s cubic-bezier(.3,1.4,.5,1) both}.fgl-loading-pic{width:150px;height:150px;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 12px 14px rgba(80,40,10,.3));animation:fgl-wave 1.8s ease-in-out infinite;transform-origin:50% 90%}@keyframes fgl-wave{0%,to{transform:rotate(-3deg) translateY(0)}50%{transform:rotate(3deg) translateY(-6px)}}.fgl-loading-line{display:flex;align-items:center;gap:10px;font:600 17px/1.3 Fredoka,Inter,ui-rounded,system-ui,sans-serif}.fgl-spinner{flex:none;width:22px;height:22px;border-radius:50%;border:3px solid #fde0c8;border-top-color:#fb7a2e;animation:fgl-spin .8s linear infinite}@keyframes fgl-spin{to{transform:rotate(360deg)}}.fgl-loading-bar{width:100%;height:12px;border-radius:99px;overflow:hidden;background:var(--clay-well, #f6ead9);box-shadow:inset 0 2px 4px #7846142e}.fgl-loading-bar i{position:relative;display:block;height:100%;border-radius:inherit;overflow:hidden;background:linear-gradient(180deg,#ffa46a,#fb7a2e);box-shadow:inset 0 2px #ffffff73;transition:width .25s ease-out}.fgl-loading-bar i:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.55) 50%,transparent 80%);transform:translate(-100%);animation:fgl-shine 1.4s ease-in-out infinite}@keyframes fgl-shine{to{transform:translate(100%)}}.fgl-loaded .fgl-loading-bar i{background:linear-gradient(180deg,#7bd893,#43b862)}.fgl-loaded .fgl-spinner{animation:none;border-color:#43b862}.fgl-loaded{animation:fgl-fade .3s ease-in .15s reverse both;pointer-events:none}@keyframes fgl-fade{0%{opacity:0}}@media (prefers-reduced-motion: reduce){.fgl-loading-pic,.fgl-loading-bar i:after,.fgl-loading-card{animation:none}.fgl-spinner{animation-duration:2s}}.pfgl{position:fixed;z-index:70;right:max(18px,env(safe-area-inset-right,0px));bottom:calc(18px + env(safe-area-inset-bottom,0px))}.pfgl-btn{position:relative;flex:none;width:68px;height:68px;padding:0;border:0;border-radius:50%;cursor:pointer;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;background:radial-gradient(ellipse 15% 9% at 73% 81%,#ffffff6b,#fff0),radial-gradient(circle at 46% 42%,#ffc48c1a,#ffa05a29 48%,#fb7a2e6b 72%,#ec5c1ab3 90%,#ffa0508c);-webkit-backdrop-filter:blur(2px) saturate(1.4);backdrop-filter:blur(2px) saturate(1.4);box-shadow:inset 0 0 16px 3px #fb7a2e66,inset 0 -8px 14px -4px #ffd27859,0 0 16px -2px #fb7a2e66,0 14px 24px -12px #28140073;transition:transform .15s cubic-bezier(.3,1.5,.5,1),box-shadow .15s ease,filter .2s;animation:pfgl-wobble 4.5s ease-in-out infinite}.pfgl-btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;border-radius:50%;pointer-events:none;opacity:.75;background:conic-gradient(from 200deg,#ff8c32b3,#ff607873,#ffcd5a99,#ff7828b3,#ffaa6e66,#ff8c32b3);-webkit-mask:radial-gradient(circle,transparent 60%,#000 86%,rgba(0,0,0,.6) 100%);mask:radial-gradient(circle,transparent 60%,#000 86%,rgba(0,0,0,.6) 100%);animation:pfgl-swirl 9s linear infinite}.pfgl-btn:before{content:"";position:absolute;left:9%;top:11%;width:42%;height:21%;z-index:3;border-radius:50%;pointer-events:none;transform:rotate(-35deg);background:radial-gradient(ellipse at 50% 50%,#fffffff2,#ffffff80 40%,#fff0 70%)}.pfgl-btn:hover{filter:brightness(1.06) saturate(1.1);transform:scale(1.05)}.pfgl-btn:hover .pfgl-face{transform:translateY(-4px) rotate(-6deg)}.pfgl-btn:active{transform:scale(.93)}.pfgl-btn:focus-visible{outline:3px solid #1b7f78;outline-offset:3px}.pfgl-dragging .pfgl-btn,.pfgl-dragging .pfgl-btn:active{cursor:grabbing;transform:scale(1.1);box-shadow:inset 0 0 16px 3px #fb7a2e66,inset 0 -8px 14px -4px #ffd27859,0 0 20px #fb7a2e73,0 24px 34px -14px #28140080}.pfgl-face{position:absolute;z-index:1;left:11px;top:9px;width:46px;height:50px;-o-object-fit:contain;object-fit:contain;pointer-events:none;filter:drop-shadow(0 3px 4px rgba(80,40,10,.3));transition:transform .25s cubic-bezier(.3,1.5,.5,1);animation:pfgl-bob 3.2s ease-in-out infinite}.pfgl-popping .pfgl-btn{animation:pfgl-burst .21s ease-out forwards;pointer-events:none}.pfgl-popping .pfgl-face{visibility:hidden}.pfgl-burst{position:absolute;right:0;bottom:0;width:68px;height:68px;border-radius:50%;pointer-events:none;box-shadow:0 0 0 2px #ffa05abf;animation:pfgl-ring .22s ease-out forwards}.pfgl-burst i{position:absolute;left:50%;top:50%;width:8px;height:8px;margin:-4px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff 0,#fff 20%,#ffa050e6 50%,#f0641e8c);transform:rotate(var(--a)) translateY(-30px);animation:pfgl-drop .24s ease-out forwards}@keyframes pfgl-burst{45%{transform:scale(1.22);opacity:1}to{transform:scale(1.45);opacity:0}}@keyframes pfgl-ring{0%{transform:scale(1);opacity:1}to{transform:scale(1.7);opacity:0}}@keyframes pfgl-drop{to{transform:rotate(var(--a)) translateY(-58px) scale(.35);opacity:0}}@keyframes pfgl-wobble{25%{scale:1.025 .975}50%{scale:1}75%{scale:.98 1.02}}@keyframes pfgl-swirl{to{transform:rotate(360deg)}}.pfgl-icon{position:absolute;z-index:3;right:-4px;bottom:-2px;width:28px;height:28px;padding:5px;border-radius:50%;color:#fff;background:#fb7a2e;box-shadow:0 0 0 2.5px var(--clay-paper, #fffaf2),0 3px 6px -2px #78320a73}@keyframes pfgl-bob{50%{transform:translateY(-3px)}}.pfgl-spot{position:fixed;top:0;right:0;bottom:0;left:0;z-index:75;pointer-events:none}.pfgl-ring{position:fixed;border-radius:16px;pointer-events:none;box-shadow:0 0 0 4px #fb7a2e,0 0 0 10px #fb7a2e40,0 0 0 9999px #3b2a1e2e;animation:pfgl-ring 1.1s ease-in-out infinite,pfgl-fade .3s ease-out both}.pfgl-pointer{position:fixed;width:92px;height:92px;-o-object-fit:contain;object-fit:contain;pointer-events:auto;cursor:pointer;filter:drop-shadow(0 10px 12px rgba(80,40,10,.3));animation:pfgl-pop .5s cubic-bezier(.3,1.6,.5,1) both,pfgl-nudge 1.1s ease-in-out .5s infinite}@keyframes pfgl-ring{50%{box-shadow:0 0 0 4px #fb7a2e,0 0 0 16px #fb7a2e1f,0 0 0 9999px #3b2a1e2e}}@keyframes pfgl-nudge{50%{transform:translate(-8px)}}@keyframes pfgl-pop{0%{opacity:0;transform:scale(.5) translate(20px)}}@keyframes pfgl-fade{0%{opacity:0}}@media (prefers-reduced-motion: reduce){.pfgl-face,.pfgl-ring,.pfgl-pointer,.pfgl-btn,.pfgl-btn:after{animation:none}.pfgl-btn,.pfgl-face{transition:none}.pfgl-dragging .pfgl-btn,.pfgl-dragging .pfgl-btn:active{transform:none}}@media print{.pfgl,.pfgl-spot{display:none}}.pfgl-run-dot{position:absolute;top:2px;right:2px;z-index:4;width:18px;height:18px;border-radius:50%;pointer-events:none;background:radial-gradient(circle at 35% 30%,#ffb08a,#f0442c 60%);box-shadow:0 0 0 3px #fffaf2,0 3px 6px #781e0a59;animation:pfgl-run-dot 1.3s ease-in-out infinite}.pfgl-run-dot:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:50%;border:3px solid #f0442c;animation:pfgl-run-ring 1.3s ease-out infinite}@keyframes pfgl-run-dot{50%{transform:scale(1.15)}}@keyframes pfgl-run-ring{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.9)}}@media (prefers-reduced-motion: reduce){.pfgl-run-dot,.pfgl-run-dot:after{animation:none}}
